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