Bug#865469: libc6-dev: a program crashes if it is statically linked against OpenSSL
control: forcemerge 872727 -1
On 2017-06-21 20:48, Mikulas Patocka wrote:
> Package: libc6-dev
> Severity: normal
>
> Dear Maintainer,
>
> *** Reporter, please consider answering these questions, where appropriate ***
>
> * What led up to the situation?
>
> Programs can't be statically linked against OpenSSL in Debian Stretch.
>
> * What exactly did you do (or not do) that was effective (or
> ineffective)?
>
> Try to compile this program with this command:
> gcc -static hello.c -lssl -lcrypto -ldl -pthread
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <openssl/ssl.h>
>
> int main(void)
> {
> OpenSSL_add_ssl_algorithms();
> printf("Hello World!\n");
> return 0;
> }
>
> * What was the outcome of this action?
>
> If you run the statically linked program, you get a crash in glibc startup
> code:
> #0 0x0000000000000000 in ?? ()
> #1 0x00000000006296c6 in __register_frame_info.part.4 ()
> #2 0x00000000004017fd in frame_dummy ()
> #3 0x000000000058c2d7 in __libc_csu_init ()
> #4 0x000000000058b95b in generic_start_main ()
> #5 0x000000000058bc3e in __libc_start_main ()
> #6 0x000000000040172a in _start ()
>
> * What outcome did you expect instead?
>
> The compiled program should work.
This is an upstream issue, due to two changes:
1) libssl is now linked with pthread
2) libssl now try to run getaddrinfo or gethostbyname
This trigger the following bug:
https://sourceware.org/bugzilla/show_bug.cgi?id=21975
As a workaround you might want to link your binary against libssl1.0
instead and without -pthread.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net
Reply to: