Monday, February 28, 2011

glibc-git and audio_setup

$ glibc
git pull
[..]

Starting, for example, mplayer [..] with audio device being busy, results in:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7de7be1 in do_lookup_x () from /lib/ld-linux-x86-64.so.2
(gdb) bt
#0  0x00007ffff7de7be1 in do_lookup_x () from /lib/ld-linux-x86-64.so.2
#1  0x00007ffff7de84d2 in _dl_lookup_symbol_x () from /lib/ld-linux-x86-64.so.2
#2  0x00007fffefb0d035 in ?? () from /lib/libc.so.6
#3  0x00007ffff6151014 in ?? () from /lib/libdl.so.2
#4  0x00007ffff7dec736 in _dl_catch_error () from /lib/ld-linux-x86-64.so.2
#5  0x00007ffff615149c in ?? () from /lib/libdl.so.2
#6  0x00007ffff615106a in dlsym () from /lib/libdl.so.2
#7  0x00007ffff638c533 in ?? () from /usr/lib/libasound.so.2
#8  0x00007ffff638c61d in snd_dlsym () from /usr/lib/libasound.so.2
#9  0x00007ffff6387a04 in ?? () from /usr/lib/libasound.so.2
#10 0x00007ffff6385cc1 in ?? () from /usr/lib/libasound.so.2
#11 0x00007ffff6385d24 in ?? () from /usr/lib/libasound.so.2
#12 0x00007ffff6386ed1 in snd_config_expand () from /usr/lib/libasound.so.2
#13 0x00007ffff63877df in snd_config_search_definition () from /usr/lib/libasound.so.2
#14 0x00007ffff63a306a in ?? () from /usr/lib/libasound.so.2
#15 0x00000000004e9843 in ?? ()
#16 0x00000000004e474f in init_best_audio_out ()
#17 0x00000000004d8b6b in reinit_audio_chain ()
#18 0x00000000004da811 in main ()


(even with -ao alsa).

Which is:
 76 static int
 77 __attribute_noinline__
 78 do_lookup_x (const char *undef_name, uint_fast32_t new_hash,
 79          unsigned long int *old_hash, const ElfW(Sym) *ref,
 80          struct sym_val *result, struct r_scope_elem *scope, size_t i,
 81          const struct r_found_version *const version, int flags,
 82          struct link_map *skip, int type_class, struct link_map *undef_map)
 83 {
 84   size_t n = scope->r_nlist;
 85   /* Make sure we read the value before proceeding.  Otherwise we
 86      might use r_list pointing to the initial scope and r_nlist being
 87      the value after a resize.  That is the only path in dl-open.c not
 88      protected by GSCOPE.  A read barrier here might be to expensive.  */
 89   __asm volatile ("" : "+r" (n), "+m" (scope->r_list));
 90   struct link_map **list = scope->r_list;
 91
 92   do
 93     {
 94       /* These variables are used in the nested function.  */
 95       Elf_Symndx symidx;
 96       int num_versions = 0;
 97       const ElfW(Sym) *versioned_sym = NULL;
 98                                                                                                                                                       
 99       const struct link_map *map = list[i]->l_real;
 100
 101  [..]

No comments:

Post a Comment