More rtld trouble (was: Re: Another vlc 2.0.3 update ... )

Juergen Lock nox at jelal.kn-bremen.de
Mon Aug 13 21:12:43 UTC 2012


Hi kib, kan, sorry to bother you again but... :)

On Mon, Aug 13, 2012 at 09:53:55PM +0200, Rainer Hurling wrote:
> On 13.08.2012 21:24 (UTC+2), Rainer Hurling wrote:
> > On 13.08.2012 19:45 (UTC+2), Juergen Lock wrote:
> >> On Mon, Aug 13, 2012 at 07:34:45AM +0200, Rainer Hurling wrote:
> >>> Am 13.08.2012 01:12 (UTC+1) schrieb Juergen Lock:
> >>>> On Sun, Aug 12, 2012 at 09:21:15PM +0200, Rainer Hurling wrote:
> >>>>> On 12.08.2012 19:14 (UTC+2), Rainer Hurling wrote:
> >>>>>> On 12.08.2012 19:11 (UTC+2), Juergen Lock wrote:
> >>>>>>> On Sun, Aug 12, 2012 at 07:07:54PM +0200, Rainer Hurling wrote:
> >>>>>>>> On 12.08.2012 16:31 (UTC+2), Juergen Lock wrote:
> >>>>>>>>> Thanks to Martin Matuska (ffmpeg port maintainer) for fixing the
> >>>>>>>>> multimedia/ffmpeg-011 port to install the shlibs with suffix!
> >>>>>>>>> I now seem to have vlc 2.0.3 working using this updated version:
> >>>>>>>>>
> >>>>>>>>>       http://people.freebsd.org/~nox/tmp/vlc-2.0.3-008.patch
> >>>>>>>>
> >>>>>>>> Does this mean we should change from multimedia/ffmpeg to
> >>>>>>>> multimedia/ffmpeg-011? Or is it ok to have them both installed?
> >>>>>>>
> >>>>>>> Yes it's ok to have both installed.
> >>>>>>
> >>>>>> Thanks, I will it give a try now :-)
> >>>>>
> >>>>> Again, there is the problem with the build breaking with
> >>>>>
> >>>>>      GEN    ../modules/plugins.dat
> >>>>> gmake[2]: *** [../modules/plugins.dat] Segmentation fault: 11
> >>>>> (Speicherauszug erstellt)
> >>>>> gmake[2]: Leaving directory
> >>>>> `/usr/ports/multimedia/vlc/work/vlc-2.0.3/bin'
> >>>>> gmake[1]: *** [all-recursive] Fehler 1
> >>>>> gmake[1]: Leaving directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3'
> >>>>> gmake: *** [all] Fehler 2
> >>>>> *** [do-build] Error code 1
> >>>>>
> >>>>> This only happens when option PulseAudio is enabled. (My sound
> >>>>> system is
> >>>>> driven by PulseAudio.)
> >>>>>
> >>>> Aah, thanx, I missed the bit about pulseaudio, now I can finally
> >>>> reproduce this.  I'll follow up on the other thread with the bt
> >>>> kib wanted.
> >>>>
> >>>>> And, as described in another thread on August, 3rd, it only happens,
> >>>>> when vlc version 1.x is already installed. So, deleting old vlc before
> >>>>> build this new version works for me.
> >>>>>
> >>>>> Unfortunately if option PulseAudio is enabled, and only then, vlc core
> >>>>> dumps right after opening for example mp3 or mp4 files :(
> >>>>
> >>>>    Hm if I did this right the bt for that is:
> >>>>
> >>>> [...]
> >>>> Loaded symbols for /libexec/ld-elf.so.1
> >>>> #0  0x0000000816d33068 in vlc_pa_connect (obj=0x6f6e2f656d6f682f,
> >>>> mlp=0x6b636f4c206e65) at vlcpulse.c:137
> >>>> 137         pa_threaded_mainloop_lock (mainloop);
> >>>> gdb) bt
> >>>> #0  0x0000000816d33068 in vlc_pa_connect (obj=0x6f6e2f656d6f682f,
> >>>> mlp=0x6b636f4c206e65) at vlcpulse.c:137
> >>>> #1  0x0000000816d34682 in Open (obj=Variable "obj" is not available.
> >>>> ) at pulse.c:840
> >>>> #2  0x0000000800aba580 in vlc_module_load () from
> >>>> /usr/local/lib/libvlccore.so.6
> >>>> #3  0x0000000800aaab2c in aout_VolumeHardSet () from
> >>>> /usr/local/lib/libvlccore.so.6
> >>>> #4  0x0000000800aa83c3 in aout_TimeReport () from
> >>>> /usr/local/lib/libvlccore.so.6
> >>>> #5  0x0000000800a75f70 in decoder_NewPicture () from
> >>>> /usr/local/lib/libvlccore.so.6
> >>>> #6  0x00000008134c77e8 in _::vlc_entry_license () from
> >>>> /usr/local/lib/vlc/plugins/codec/libfaad_plugin.so
> >>>> #7  0x0000000800a76d83 in input_DecoderCreate () from
> >>>> /usr/local/lib/libvlccore.so.6
> >>>> #8  0x0000000800a7810d in input_DecoderCreate () from
> >>>> /usr/local/lib/libvlccore.so.6
> >>>> #9  0x0000000800a785db in input_DecoderCreate () from
> >>>> /usr/local/lib/libvlccore.so.6
> >>>> #10 0x000000080169c58d in pthread_create () from /lib/libthr.so.3
> >>>> #11 0x0000000000000000 in ?? ()
> >>>> Cannot access memory at address 0x7ffffedf4000
> >>>> (gdb) l vlcpulse.c:130
> >>>> 125             {
> >>>> 126                 pa_proplist_setf (props,
> >>>> PA_PROP_APPLICATION_PROCESS_MACHINE_ID,
> >>>> 127                                   "%.32s", session); /* XXX: is
> >>>> this valid? */
> >>>> 128                 pa_proplist_sets (props,
> >>>> PA_PROP_APPLICATION_PROCESS_SESSION_ID,
> >>>> 129                                   session);
> >>>> 130             }
> >>>> 131         }
> >>>> 132
> >>>> 133         /* Connect to PulseAudio daemon */
> >>>> 134         pa_context *ctx;
> >>>> (gdb) l
> >>>> 135         pa_mainloop_api *api;
> >>>> 136
> >>>> 137         pa_threaded_mainloop_lock (mainloop);
> >>>> 138         api = pa_threaded_mainloop_get_api (mainloop);
> >>>> 139         ctx = pa_context_new_with_proplist (api, ua, props);
> >>>> 140         free (ua);
> >>>> 141         if (props != NULL)
> >>>> 142             pa_proplist_free (props);
> >>>> 143         if (unlikely(ctx == NULL))
> >>>> 144             goto fail;
> >>>> (gdb)
> >>>
> >>> I can confirm this backtrace. It is exactly the same on my system.
> >>>
> >> I just posted the workaround for that crash:
> >>
> >>     http://people.freebsd.org/~nox/tmp/vlc-2.0.3-009.patch
> >
> > Thanks for the newest patch! The change from
> > sysconf(_SC_GETPW_R_SIZE_MAX) to LINE_MAX + 1 works nice here. No core
> > dumps any more and sound via pulseaudio is working again :)
> >
> >>>>    I'll Cc the pulseaudio port maintainers (gnome@), maybe they have
> >>>> an idea?
> >>>
> >>> Did you forgot to Cc gnome@ (even on the other thread)?
> >>>
> >>   Yeah, I manually forwarded the mail when I noticed.
> >>>
> >>> I tried out a little bit the build without pulseaudio enabled. It seems
> >>> to me, that the sound of vlc is somewhat noisy or dirty, especially for
> >>> parts with more dynamics. This scratchy noise grows up when gain control
> >>> comes over 100% (up to 200% is possible). Can anyone confirm this?
> >>>
> >>   I haven't noticed that here, maybe your soundcard is clipping etc
> >> due to too high mixer levels?
> >
> > Hmm, possible, but unlikely. This worked pretty good with version 1.1.13
> > and as I wrote, gain control was set in the middle (100%). But now, with
> > pulseaudio enabled again, there is not problem with damaged sound
> > quality any more.
> >
> >>> And last but not least: When I deinstall vlc I get the following
> >>> message:
> >>> pkg_delete: '/usr/local/lib/vlc/plugins/plugins.dat' fails original MD5
> >>> checksum - deleted anyway.
> >>>
> >>   That's the file whose generating crashed when building with the old
> >> vlc still installed, maybe it's regenerated at runtime otherwise?
> >
> > No, it also fails original MD5 checksum with deinstall/reinstall within
> > 2.0.3.
> >
> >>> Thanks again for your work on this port.
> >>> Rainer
> >>
> >>   You're welcome! :)
> >>     Juergen
> 
> I just found two other problems, which at least occur on my system 
> (10.0-CURRENT amd64):
> 
> (1) With option NOTIFY enabled I am able to build, but not to install 
> vlc. It gives me:
> 
> gmake[3]: Entering directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3'
>   /usr/local/bin/gmkdir -p 
> '/usr/ports/multimedia/vlc/work/fake/usr/local/bin'
>   install  -o root -g wheel -m 555 cvlc rvlc svlc qvlc 
> '/usr/ports/multimedia/vlc/work/fake/usr/local/bin'
> gmake  install-exec-hook
> gmake[4]: Entering directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3'
> if test "amd64-portbld-freebsd10.0" = "amd64-portbld-freebsd10.0"; then \
>  
> LD_LIBRARY_PATH="/usr/ports/multimedia/vlc/work/fake/usr/local/lib:$LD_LIBRARY_PATH" 
> \
>  
> "/usr/ports/multimedia/vlc/work/fake/usr/local/lib/vlc/vlc-cache-gen" \
>  
> "/usr/ports/multimedia/vlc/work/fake/usr/local/lib/vlc/plugins" ; \
> else \
>          echo "Cross-compilation: cache generation skipped!" ; \
> fi
> gmake[4]: *** [install-exec-hook] Segmentation fault: 11 (Speicherauszug 
> erstellt)
> gmake[4]: Leaving directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3'
> gmake[3]: *** [install-exec-am] Fehler 2
> gmake[3]: Leaving directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3'
> gmake[2]: *** [install-am] Fehler 2
> gmake[2]: Leaving directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3'
> gmake[1]: *** [install-recursive] Fehler 1
> gmake[1]: Leaving directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3'
> gmake: *** [install] Fehler 2
> *** [pre-install] Error code 2
> 
 Looks like this is another vlc-cache-gen rtld crash, and this time
the remove-old-vlc-version-first workaround doesn't apply...

[...]
Loaded symbols for /libexec/ld-elf.so.1
#0  symlook_obj (req=0x7fffffffbef0, obj=0x800640c00) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3847
3847            for (symnum = obj->buckets[req->hash % obj->nbuckets];
[New Thread 802406400 (LWP 100159/vlc-cache-gen)]
(gdb) bt
#0  symlook_obj (req=0x7fffffffbef0, obj=0x800640c00) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3847
#1  0x0000000800608ae7 in symlook_list (req=0x7fffffffc110, objlist=Variable "objlist" is not available.
) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3611
#2  0x000000080060911b in symlook_default (req=0x7fffffffc1b0, refobj=Variable "refobj" is not available.
) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3569
#3  0x000000080060939d in find_symdef (symnum=14, refobj=0x800704c00, defobj_out=0x7fffffffc250, flags=0, cache=0x80061d000, lockstate=0x7fffffffc2f0)
    at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:1541
#4  0x0000000800603690 in reloc_non_plt (obj=0x800704c00, obj_rtld=Variable "obj_rtld" is not available.
) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/amd64/reloc.c:204
#5  0x0000000800606ae8 in relocate_object (obj=0x800704c00, bind_now=0 '\0', rtldobj=0x800819d00, flags=0, lockstate=0x7fffffffc2f0)
    at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:2433
#6  0x00000008006084a8 in dlopen_object (
    name=0x80243fb80 "/usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/vlc/plugins/services_discovery/libpulselist_plugin.so", fd=Variable "fd" is not available.
)
    at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:2392
#7  0x0000000800608f67 in rtld_dlopen (
    name=0x80243fb80 "/usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/vlc/plugins/services_discovery/libpulselist_plugin.so", fd=-1, mode=1)
    at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:2761
#8  0x0000000800ad377d in vlc_timer_create () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlccore.so.6
#9  0x0000000800ab9998 in module_gettext () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlccore.so.6
#10 0x0000000800aba0aa in module_list_get () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlccore.so.6
#11 0x0000000800ab9db1 in module_list_get () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlccore.so.6
#12 0x0000000800aba17d in module_list_get () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlccore.so.6
#13 0x0000000800aba631 in module_list_get () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlccore.so.6
#14 0x0000000800a52573 in libvlc_InternalInit () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlccore.so.6
#15 0x0000000800822777 in libvlc_new () from /usr/ports/multimedia/vlc-203a/work/fake/usr/local/lib/libvlc.so.8
#16 0x0000000000400cd4 in main ()
(gdb) p obj->buckets[req->hash % obj->nbuckets]
Cannot access memory at address 0x8082ac16c
(gdb) p obj->nbuckets
$1 = 17
(gdb) p *obj
$2 = {magic = 3578837114, version = 1, next = 0x800641c00, path = 0x800643a00 "/usr/local/lib/libXinerama.so.1", origin_path = 0x0, refcount = 1, dl_refcount = 0, 
  mapbase = 0x8082ac000 <Address 0x8082ac000 out of bounds>, mapsize = 2105344, textsize = 8192, vaddrbase = 0, 
  relocbase = 0x8082ac000 <Address 0x8082ac000 out of bounds>, dynamic = 0x8084ad6d8, entry = 0x8082aca40 <Address 0x8082aca40 out of bounds>, phdr = 0x8082ac040, 
  phsize = 280, interp = 0x0, stack_flags = 6, tlsindex = 0, tlsinit = 0x0, tlsinitsize = 0, tlssize = 0, tlsoffset = 0, tlsalign = 0, 
  relro_page = 0x8082ac000 <Address 0x8082ac000 out of bounds>, relro_size = 0, pltgot = 0x8084ad8f8, rel = 0x0, relsize = 0, rela = 0x8082ac768, relasize = 168, 
  pltrel = 0x0, pltrelsize = 0, pltrela = 0x8082ac810, pltrelasize = 312, symtab = 0x8082ac218, strtab = 0x8082ac4d0 <Address 0x8082ac4d0 out of bounds>, 
  strsize = 568, verneed = 0x8082ac748, verneednum = 1, verdef = 0x0, verdefnum = 0, versyms = 0x8082ac708, buckets = 0x8082ac160, nbuckets = 17, 
  chains = 0x8082ac1a4, nchains = 29, nbuckets_gnu = 0, symndx_gnu = 0, maskwords_bm_gnu = 0, shift2_gnu = 0, dynsymcount = 29, bloom_gnu = 0x0, buckets_gnu = 0x0, 
  chain_zero_gnu = 0x0, rpath = 0x8082ac6f0 <Address 0x8082ac6f0 out of bounds>, runpath = 0x0, needed = 0x0, needed_filtees = 0x0, needed_aux_filtees = 0x0, 
  names = {stqh_first = 0x0, stqh_last = 0x800640dc0}, vertab = 0x80061ed80, vernum = 3, init = 34496760136, fini = 34496763032, preinit_array = 0, init_array = 0, 
  fini_array = 0, preinit_array_num = 0, init_array_num = 0, fini_array_num = 0, osrel = 0, mainprog = 0 '\0', rtld = 0 '\0', relocated = 1 '\001', 
  ver_checked = 1 '\001', textrel = 0 '\0', symbolic = 0 '\0', bind_now = 0 '\0', traced = 0 '\0', jmpslots_done = 0 '\0', init_done = 1 '\001', tls_done = 0 '\0', 
  phdr_alloc = 0 '\0', z_origin = 0 '\0', z_nodelete = 0 '\0', z_noopen = 0 '\0', z_loadfltr = 0 '\0', z_nodeflib = 0 '\0', ref_nodel = 0 '\0', 
  init_scanned = 0 '\0', on_fini_list = 1 '\001', dag_inited = 0 '\0', filtees_loaded = 0 '\0', irelative = 0 '\0', gnu_ifunc = 0 '\0', crt_no_init = 0 '\0', 
  valid_hash_sysv = 1 '\001', valid_hash_gnu = 0 '\0', linkmap = {l_addr = 0x8082ac000 <Address 0x8082ac000 out of bounds>, 
    l_name = 0x800643a00 "/usr/local/lib/libXinerama.so.1", l_ld = 0x8084ad6d8, l_next = 0x800641e20, l_prev = 0x800641a20}, dldags = {stqh_first = 0x8006fce60, 
    stqh_last = 0x8006fce60}, dagmembers = {stqh_first = 0x0, stqh_last = 0x800640e58}, dev = 160, ino = 2054422, priv = 0x0}
(gdb) p obj->buckets
$3 = (const Elf_Hashelt *) 0x8082ac160
(gdb) p obj->buckets[16]
Cannot access memory at address 0x8082ac1a0
(gdb) p obj->buckets[15]
Cannot access memory at address 0x8082ac19c
(gdb) p obj->buckets[10]
Cannot access memory at address 0x8082ac188
(gdb) p obj->buckets[5]
Cannot access memory at address 0x8082ac174
(gdb) p obj->buckets[2]
Cannot access memory at address 0x8082ac168
(gdb) p obj->buckets[1]
Cannot access memory at address 0x8082ac164
(gdb) p obj->buckets[0]
Cannot access memory at address 0x8082ac160
(gdb) 

> 
> (2) Option PROJM builds and installs, but crashes when I try to start it 
> within vlc:
> 
> No Textures Loaded from /usr/local/share/projectM/textures
> Segmentation fault (core dumped)
> 
> As far as I can see, there is no path to projectM/textures (installed 
> from libprojectM) on FreeBSD, but to projectM/presets?
> 
 I'll have to look at that next...
> 
> Sorry for this late response, but before I was not able to run vlc 
> because of the pulseaudio crashing.

 Thanx,
	Juergen


More information about the freebsd-ports mailing list