[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#872727: libc6-dev: gethostbyname always segfaults if linked statically



control: retitle -1 Bug#872727: libc6-dev: gethostbyname segfaults with libnss_resolve.so.2 for static binaries
control: tag -1 + upstream
control: forwarded https://sourceware.org/bugzilla/show_bug.cgi?id=21975

On 2017-08-20 17:02, Horst Schirmeier wrote:
> Package: libc6-dev
> Version: 2.24-11+deb9u1
> Severity: normal
> 
> Dear Maintainer,
> 
> with glibc 2.24 (reproducible on 64-bit Debian 9 or Ubuntu 17.04),
> gethostbyname() always segfaults if the binary was linked statically:
> 
> $ echo -e "#include <netdb.h>\nint main(void){gethostbyname(\"foo\");}" >foo.c && \
> gcc -g -static foo.c && ./a.out
> /tmp/ccp8JNGC.o: In function `main':
> /tmp/foo.c:2: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> Segmentation fault
> $ gdb a.out                                                 
> GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
> [...]
> Reading symbols from a.out...done.
> (gdb) run
> Starting program: /tmp/a.out 
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000000000000000 in ?? ()
> (gdb) bt
> #0  0x0000000000000000 in ?? ()
> #1  0x00007ffff72ac040 in __pthread_initialize_minimal_internal () at nptl-init.c:460
> #2  0x00007ffff72ab5e1 in _init () at ../sysdeps/x86_64/crti.S:72
> #3  0x00007ffff76cc830 in ?? () from /lib/x86_64-linux-gnu/libnss_myhostname.so.2
> #4  0x0000000000478a7a in call_init.part ()
> #5  0x0000000000478c35 in _dl_init ()
> #6  0x000000000047089e in dl_open_worker ()
> #7  0x000000000046e0f4 in _dl_catch_error ()
> #8  0x000000000047024c in _dl_open ()
> #9  0x0000000000439ba2 in do_dlopen ()
> #10 0x000000000046e0f4 in _dl_catch_error ()
> #11 0x0000000000439bd7 in dlerror_run ()
> #12 0x0000000000439da3 in __libc_dlopen_mode ()
> #13 0x0000000000436b3b in __nss_lookup_function ()
> #14 0x0000000000436d45 in __nss_next2 ()
> #15 0x000000000043504a in gethostbyname_r ()
> #16 0x0000000000434d93 in gethostbyname ()
> #17 0x0000000000400b2e in main () at foo.c:2

As said in the upstream bug report, it's because you are using
libnss-resolve or libnss-myhostname, which are linked with libpthread.
The workaround is to not install those packages or to disable them in
/etc/nsswitch.conf.

> In my upstream bug report, a commenter noted that this weren't reproducible in
> Fedora's glibc 2.24 or 2.25, suggesting this "could be a Debian or Ubuntu
> patch": https://sourceware.org/bugzilla/show_bug.cgi?id=21975

I am perfectly able to reproduce the issue on a fedora system, which
installs libnss-myhostname by default.

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net


Reply to: