• Bug#865469: libc6-dev: a program crashes if it is statically linked aga

    From Mikulas Patocka@21:1/5 to All on Wed Jun 21 22:00:02 2017
    XPost: linux.debian.bugs.dist

    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.



    -- System Information:
    Debian Release: 9.0
    APT prefers stable
    APT policy: (500, 'stable')
    Architecture: amd64 (x86_64)
    Foreign Architectures: i386

    Kernel: Linux 4.4.72 (SMP w/12 CPU cores; PREEMPT)
    Locale: LANG=cs_CZ.utf8, LC_CTYPE=cs_CZ.utf8 (charmap=UTF-8), LANGUAGE=cs_CZ.utf8 (charmap=UTF-8)
    Shell: /bin/sh linked to /bin/dash
    Init: sysvinit (via /sbin/init)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Aurelien Jarno@21:1/5 to Mikulas Patocka on Sun Aug 20 20:20:03 2017
    XPost: linux.debian.bugs.dist

    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)