uclibc segfault in ldso again..

Colin Whittaker colinw at occamnetworks.com
Wed Apr 1 22:09:15 UTC 2009


I turned on SUPPORT_LD_DEBUG=y
Now with LD_DEBUG=all, it segfaults everytime.
Without the LD_DEBUG=all, it runs without segfault, except the very 
first time...
At least I have consistent behavior now.

Here is the output of
# LD_DEBUG=all scp

_dl_get_ready_to_run:587:       file='libutil.so.0';  needed by 'scp'
_dl_load_shared_library:222:    find library='libutil.so.0'; searching
_dl_load_shared_library:298:    searching ldso dir='/lib'
_dl_load_elf_shared_library:639:
        file='/lib/libutil.so.0';  generating link map
_dl_load_elf_shared_library:640:                dynamic: 0x2aac412c  
base: 0x2aac4000
_dl_load_elf_shared_library:642:                  entry: 0x2aac4730  
phdr: 0x2aac4034  phnum: 0x7

_dl_get_ready_to_run:587:       file='libz.so.1';  needed by 'scp'
_dl_load_shared_library:222:    find library='libz.so.1'; searching
_dl_load_shared_library:298:    searching ldso dir='/lib'
_dl_load_shared_library:307:    searching full lib path list
_dl_load_elf_shared_library:639:
        file='/usr/lib/libz.so.1';  generating link map
_dl_load_elf_shared_library:640:                dynamic: 0x2aad610c  
base: 0x2aad6000
_dl_load_elf_shared_library:642:                  entry: 0x2aad7200  
phdr: 0x2aad6034  phnum: 0x6

_dl_get_ready_to_run:587:       file='libcrypt.so.0';  needed by 'scp'
_dl_load_shared_library:222:    find library='libcrypt.so.0'; searching
_dl_load_shared_library:298:    searching ldso dir='/lib'
_dl_load_elf_shared_library:639:
        file='/lib/libcrypt.so.0';  generating link map
_dl_load_elf_shared_library:640:                dynamic: 0x2aaf812c  
base: 0x2aaf8000
_dl_load_elf_shared_library:642:                  entry: 0x2aaf84c0  
phdr: 0x2aaf8034  phnum: 0x7

_dl_get_ready_to_run:587:       file='libc.so.0';  needed by 'scp'
_dl_load_shared_library:222:    find library='libc.so.0'; searching
_dl_load_shared_library:298:    searching ldso dir='/lib'
_dl_load_elf_shared_library:639:
        file='/lib/libc.so.0';  generating link map
_dl_load_elf_shared_library:640:                dynamic: 0x2ab1e14c  
base: 0x2ab1e000
_dl_load_elf_shared_library:642:                  entry: 0x2ab28af0  
phdr: 0x2ab1e034  phnum: 0x8

_dl_get_ready_to_run:587:       file='libc.so.0';  needed by 'scp'
_dl_load_shared_library:222:    find library='libc.so.0'; searching
_dl_load_shared_library:298:    searching ldso dir='/lib'
_dl_get_ready_to_run:587:       file='libc.so.0';  needed by 'scp'
_dl_load_shared_library:222:    find library='libc.so.0'; searching
_dl_load_shared_library:298:    searching ldso dir='/lib'
_dl_get_ready_to_run:587:       file='libc.so.0';  needed by 'scp'
_dl_load_shared_library:222:    find library='libc.so.0'; searching
_dl_load_shared_library:298:    searching ldso dir='/lib'

INIT/FINI order and dependencies:
lib: /lib/libutil.so.0 has deps:
 /lib/libc.so.0
lib: /usr/lib/libz.so.1 has deps:
 /lib/libc.so.0
lib: /lib/libcrypt.so.0 has deps:
 /lib/libc.so.0
lib: /lib/libc.so.0 has deps:

_dl_perform_mips_global_got_relocations for 'scp'
_dl_perform_mips_global_got_relocations for '/lib/libutil.so.0'
_dl_perform_mips_global_got_relocations for '/usr/lib/libz.so.1'
_dl_perform_mips_global_got_relocations for '/lib/libcrypt.so.0'
_dl_perform_mips_global_got_relocations for '/lib/libc.so.0'
_dl_fixup:664: relocation processing: /lib/libc.so.0

        Segmentation fault
#  scp
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 [...] [[user@]host2:]file2
#

Colin Whittaker wrote:
> I am seeing what Nigel saw in the thread of the same name.
>
> I am running on mips.
> Basically after the ldso loads everything it goes and tries to run the 
> init function with DL_CALL_FUNC_AT_ADDR().
>
> First time it runs __GI___uClibc_init which is in libc.so.0
> Second time it points to something called _init which appears to be in 
> the .init section of libz.so.1
> It crashes in there. From what I see it looks like a bad address in 
> the GOT.
>
> If I run the same program again. It does not crash. And everytime 
> after that it does not crash.
> Weird....
>
> Then another application, which uses other libs, has the same problem. 
> 1st time it crashes during init. 2nd time and ever after it runs fine.
>
> I never did see if Nigel found a fix. I am using the
> LINUXTHREADS_OLD=y
> PTHREADS_DEBUG_SUPPORT=y
>
> I've tried both 0.29 and 0.30.
>
> Any thoughts ?
>
> Colin..
>
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc


More information about the uClibc mailing list