This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: 2.14.1 release
- From: Allin Cottrell <cottrell at wfu dot edu>
- To: Mike Frysinger <vapier at gentoo dot org>
- Cc: libc-alpha at sourceware dot org, Andreas Schwab <schwab at redhat dot com>
- Date: Wed, 21 Sep 2011 11:17:16 -0400 (EDT)
- Subject: Re: 2.14.1 release
- References: <m34o08kipm.fsf@hase.home> <201109191015.29824.vapier@gentoo.org>
On Mon, 19 Sep 2011, Mike Frysinger wrote:
On Monday, September 19, 2011 05:03:01 Andreas Schwab wrote:
I'm planning to release 2.14.1 soon. Anything that should be added?
the changes that have gone into master to fix [1] aren't exactly clear. have
those changes been added to the 2.14 branch now ?
-mike
1: http://sourceware.org/ml/libc-alpha/2011-06/msg00006.html
Here's another 2.14 dl* question.
When I first installed glibc 2.14 I got segfaults with libdl
operations in some pretty standard programs, notably
aplay/libasound (details below). I then applied the patch
mentioned by Mike F in
http://sources.redhat.com/ml/libc-alpha/2011-06/msg00010.html
and that solved the libasound problem.
However, I noticed later that Mike's patch broke something
else, namely it reinstated a problem raised on the gcc list
under the title "4.6.0: undefined symbol:
_ZNSt14error_categoryD2Ev, version GLIBCXX_3.4.15 when dlclose
C++ libs from C program" -- see the thread starting with
http://gcc.gnu.org/ml/gcc-help/2011-07/msg00099.html .
Since the latter problem turned out to be more serious for me
I have now rebuilt glibc 2.14 from git, without Mike's patch,
and the libasound segfault is back. I don't know whether this
is a glibc issue or a bug in libasound, but here's what I've
found libasound is doing on start-up, with regard to the dl*
functions (all calls to dlopen, dlsym and dlclose):
dlopen: '/usr/lib/libasound.so.2' -> 0xb7822670
dlsym: handle = 0xb7822670, vname =
'_snd_config_hook_load_dlsym_config_hook_001'
dlclose: 0xb7822670
dlopen: '/usr/lib/libasound.so.2' -> 0xb7822670
dlsym: handle = 0xb7822670, vname =
'_snd_config_hook_load_dlsym_config_hook_001'
dlopen: '/usr/lib/libasound.so.2' -> 0xb7822670
dlsym: handle = 0xb7822670, vname =
'_snd_func_concat_dlsym_config_evaluate_001'
dlopen: '/usr/lib/libasound.so.2' -> 0xb7822670
dlsym: handle = 0xb7822670, vname =
'_snd_func_datadir_dlsym_config_evaluate_001'
dlclose: 0xb7822670
dlclose: 0xb7822670
dlclose: 0xb7822670
dlopen: '/usr/lib/libasound.so.2' -> 0xb7822670
dlsym: handle = 0xb7822670, vname =
'_snd_config_hook_load_for_all_cards_dlsym_config_hook_001'
Segmentation fault
The repeated dlopen() on the same library followed by repeated
dlclose() looks suspicious, but I don't know if it is
technically broken. The libasound code worked OK with glibc
2.13, but maybe that was just lucky?
FWIW, valgrind says the following:
Invalid read of size 4
at 0x40092AB: do_lookup_x (dl-lookup.c:98)
by 0x4009A3E: _dl_lookup_symbol_x (dl-lookup.c:739)
by 0x4295FEF: do_sym (dl-sym.c:177)
by 0x4296466: _dl_sym (dl-sym.c:283)
by 0x432ABE7: ???
Address 0x432a4e8 is 32 bytes inside a block of size 60 free'd
at 0x4027B88: free (vg_replace_malloc.c:343)
by 0x4011B85: _dl_scope_free (dl-scope.c:32)
by 0x4013C4F: _dl_close (dl-close.c:779)
by 0x4173CB2: dlclose_doit (dlclose.c:37)
by 0x400E770: _dl_catch_error (dl-error.c:178)
by 0x417426E: _dlerror_run (dlerror.c:164)
by 0x4173CE8: dlclose (dlclose.c:48)
by 0x407E85A: snd_dlclose (dlmisc.c:91)
by 0x4079A28: snd_config_hooks.constprop.27 (conf.c:3327)
by 0x407A641: snd_config_update_r (conf.c:3711)
by 0x407AB57: snd_config_update (conf.c:3742)
by 0x409B83E: snd_pcm_open (pcm.c:2239)
It would be great to have this clarified.
Allin Cottrell