Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAB=m8wKevO1tOZ8ZXqdAcF2rqPMgOx_A10AL296a40+W8NPGzA@mail.gmail.com>
Date: Wed, 5 Jun 2019 13:53:58 -0600
From: "tenspd137 ." <dcday137@...il.com>
To: Rich Felker <dalias@...c.org>
Cc: musl@...ts.openwall.com
Subject: Re: Illegal instruction in __copy_tls()

Sure -

strace -d -v ./a.out:
strace: ptrace_setoptions = 0x51
strace: new tcb for pid 26302, active tcbs:1
strace: [wait(0x80137f) = 26302] WIFSTOPPED,sig=SIGSTOP,EVENT_STOP (128)
strace: pid 26302 has TCB_STARTUP, initializing it
strace: [wait(0x80057f) = 26302] WIFSTOPPED,sig=SIGTRAP,EVENT_STOP (128)
strace: [wait(0x00127f) = 26302] WIFSTOPPED,sig=SIGCONT
strace: [wait(0x00857f) = 26302] WIFSTOPPED,sig=133
execve("./a.out", ["./a.out"], ["SSH_CONNECTION=15.86.136.27 5196"...,
"LANG=en_US.UTF-8", "XDG_SESSION_ID=41", "USER=dayd",
"PWD=/home/dayd/projects/musl-tes"..., "HOME=/home/dayd",
"SSH_CLIENT=xx.xxx.xxx.xx 51960 22", "CCACHE_DIR=/ssd/dayd/.ccache",
"VMWARE_USE_SHIPPED_GTK=yes", "XDG_DATA_DIRS=/usr/local/share:/"...,
"USECCACHE=ON", "SSH_TTY=/dev/pts/2", "MAIL=/var/mail/dayd",
"TERM=rxvt-unicode-256color", "SHELL=/bin/bash", "SHLVL=1",
"PYTHONPATH=:/home/dayd/projects/"..., "LOGNAME=dayd",
"DBUS_SESSION_BUS_ADDRESS=unix:pa"...,
"XDG_RUNTIME_DIR=/run/user/6686",
"PATH=/usr/lib/ccache/bin/:/usr/l"..., "USEDISTCC=OFF",
"_=/usr/bin/strace", "OLDPWD=/home/dayd/projects"]strace:
[wait(0x04057f) = 26302] WIFSTOPPED,sig=SIGTRAP,EVENT_EXEC (4)
strace: [wait(0x00857f) = 26302] WIFSTOPPED,sig=133
) = 0
strace: [wait(0x00047f) = 26302] WIFSTOPPED,sig=SIGILL
--- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x40169e} ---
strace: [wait(0x06057f) = 26302] WIFSTOPPED,sig=SIGTRAP,EVENT_EXIT (6)
strace: [wait(0x000084) = 26302] WIFSIGNALED,core,sig=SIGILL
+++ killed by SIGILL (core dumped) +++
strace: dropped tcb for pid 26302, 0 remain
Illegal instruction (core dumped)
******************************************************************************************
(gdb) bt
#0  0x00000000004016ae in __copy_tls ()
#1  0x0000000000000000 in ?? ()
*****************************************************************************************

(gdb) disassemble
Dump of assembler code for function __copy_tls:
   0x0000000000401680 <+0>:    push   %r13
   0x0000000000401682 <+2>:    mov    %rdi,%r13
   0x0000000000401685 <+5>:    push   %r12
   0x0000000000401687 <+7>:    push   %rbp
   0x0000000000401688 <+8>:    push   %rbx
   0x0000000000401689 <+9>:    sub    $0x8,%rsp
   0x000000000040168d <+13>:    mov    0x410c(%rip),%rax        #
0x4057a0 <__libc+32>
   0x0000000000401694 <+20>:    mov    0x410d(%rip),%rcx        #
0x4057a8 <__libc+40>
   0x000000000040169b <+27>:    mov    0x40f6(%rip),%rbx        #
0x405798 <__libc+24>
   0x00000000004016a2 <+34>:    lea    -0xe0(%rdi,%rax,1),%rax
   0x00000000004016aa <+42>:    lea    -0x1(%rcx),%r12
=> 0x00000000004016ae <+46>:    andn   %rax,%r12,%r12
   0x00000000004016b3 <+51>:    test   %rbx,%rbx
   0x00000000004016b6 <+54>:    je     0x4016eb <__copy_tls+107>
   0x00000000004016b8 <+56>:    lea    0x8(%rdi),%rbp
   0x00000000004016bc <+60>:    nopl   0x0(%rax)
   0x00000000004016c0 <+64>:    mov    %r12,%rax
   0x00000000004016c3 <+67>:    sub    0x28(%rbx),%rax
   0x00000000004016c7 <+71>:    mov    %rax,0x0(%rbp)
   0x00000000004016cb <+75>:    mov    0x8(%rbx),%rsi
   0x00000000004016cf <+79>:    mov    %r12,%rdi
   0x00000000004016d2 <+82>:    mov    0x10(%rbx),%rdx
   0x00000000004016d6 <+86>:    sub    0x28(%rbx),%rdi
   0x00000000004016da <+90>:    callq  0x401e3c <memcpy>
   0x00000000004016df <+95>:    mov    (%rbx),%rbx
   0x00000000004016e2 <+98>:    add    $0x8,%rbp
   0x00000000004016e6 <+102>:    test   %rbx,%rbx
   0x00000000004016e9 <+105>:    jne    0x4016c0 <__copy_tls+64>
   0x00000000004016eb <+107>:    mov    0x40be(%rip),%rax        #
0x4057b0 <__libc+48>
   0x00000000004016f2 <+114>:    mov    %rax,0x0(%r13)
   0x00000000004016f6 <+118>:    mov    %r13,0xd8(%r12)
   0x00000000004016fe <+126>:    mov    %r13,0x8(%r12)
   0x0000000000401703 <+131>:    add    $0x8,%rsp
   0x0000000000401707 <+135>:    mov    %r12,%rax
   0x000000000040170a <+138>:    pop    %rbx
   0x000000000040170b <+139>:    pop    %rbp
   0x000000000040170c <+140>:    pop    %r12
   0x000000000040170e <+142>:    pop    %r13
   0x0000000000401710 <+144>:    retq
End of assembler dump.

***********************************************************************************

as a bonus (I thought this might also help):
(%:~/projects/musl-test)┌- x86_64-pc-linux-musl-gcc -v -static -O0 -g
hello.c
Using built-in specs.
COLLECT_GCC=x86_64-pc-linux-musl-gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/lto-wrapper
Target: x86_64-pc-linux-musl
Configured with:
/var/tmp/portage/cross-x86_64-pc-linux-musl/gcc-9.1.0/work/gcc-9.1.0/configure
--host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-musl
--build=x86_64-pc-linux-gnu --prefix=/usr
--bindir=/usr/x86_64-pc-linux-gnu/x86_64-pc-linux-musl/gcc-bin/9.1.0
--includedir=/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0
--mandir=/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include/g++-v9
--with-python-dir=/share/gcc-data/x86_64-pc-linux-musl/9.1.0/python
--enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt
--disable-werror --with-system-zlib --enable-nls
--without-included-gettext --enable-checking=release
--with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 9.1.0
p1.0' --disable-esp --enable-libstdcxx-time
--enable-poison-system-directories
--with-sysroot=/usr/x86_64-pc-linux-musl --disable-bootstrap
--enable-__cxa_atexit --disable-multilib --with-multilib-list=m64
--disable-altivec --disable-fixed-point --enable-targets=all
--enable-libgomp --disable-libmudflap --disable-libssp
--disable-systemtap --disable-vtable-verify --disable-libvtv
--enable-lto --without-isl --disable-libsanitizer --enable-default-pie
--enable-default-ssp
Thread model: posix
gcc version 9.1.0 (Gentoo 9.1.0 p1.0)
COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64'
 /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/cc1 -quiet -v hello.c
-quiet -dumpbase hello.c -mtune=generic -march=x86-64 -auxbase hello
-g -O0 -version -o /tmp/ccoTkh38.s
GNU C17 (Gentoo 9.1.0 p1.0) version 9.1.0 (x86_64-pc-linux-musl)
    compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version
4.0.2, MPC version 1.1.0, isl version none
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/x86_64-pc-linux-musl/usr/local/include"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-linux-musl/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/x86_64-pc-linux-musl/usr/include
 /usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include
End of search list.
GNU C17 (Gentoo 9.1.0 p1.0) version 9.1.0 (x86_64-pc-linux-musl)
    compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version
4.0.2, MPC version 1.1.0, isl version none
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: a3183e5f435d1938198d432af6db159b
COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64'
 /usr/libexec/gcc/x86_64-pc-linux-musl/as -v --64 -o /tmp/ccHq7CL6.o
/tmp/ccoTkh38.s
GNU assembler version 2.32.0 (x86_64-pc-linux-musl) using BFD version
(Gentoo 2.32 p2) 2.32.0
COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/libexec/gcc/x86_64-pc-linux-musl/:/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/lib/gcc/x86_64-pc-linux-musl/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-linux-musl/lib/:/usr/x86_64-pc-linux-musl/lib/:/usr/x86_64-pc-linux-musl/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64'
 /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/collect2 -plugin
/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/liblto_plugin.so
-plugin-opt=/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/lto-wrapper
-plugin-opt=-fresolution=/tmp/ccWcifv4.res
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh
-plugin-opt=-pass-through=-lc --sysroot=/usr/x86_64-pc-linux-musl -m
elf_x86_64 -static /usr/x86_64-pc-linux-musl/usr/lib/crt1.o
/usr/x86_64-pc-linux-musl/usr/lib/crti.o
/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/crtbeginT.o
-L/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0
-L/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-linux-musl/lib
-L/usr/x86_64-pc-linux-musl/lib -L/usr/x86_64-pc-linux-musl/usr/lib
/tmp/ccHq7CL6.o --start-group -lgcc -lgcc_eh -lc --end-group
/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/crtend.o
/usr/x86_64-pc-linux-musl/usr/lib/crtn.o
COLLECT_GCC_OPTIONS='-v' '-static' '-O0' '-g' '-mtune=generic' '-march=x86-64'

mtune=generic and march=x86-64 suggests it isn't trying to do
something weird on the compile computer.

Also, if I messed up and am not giving you what you are asking for,
please let me know and I will grab it.

Thanks!

On Wed, Jun 5, 2019 at 12:37 PM Rich Felker <dalias@...c.org> wrote:
>
> On Wed, Jun 05, 2019 at 12:16:39PM -0600, tenspd137 . wrote:
> > Hi all
> >
> > I am using musl 1.1.22 with in a cross toolchain to create static
> > binaries on my machine.  I am running gentoo linux and used their
> > crossdev tool to create the cross compiler (x86_64-pc-linux-musl).  I
> > created a small hello world app:
> >
> > #include <stdio.h>
> > int main(int argc, char **argv)
> > {printf("Hello MUSL\n");}
> >
> > and compiled with:
> >
> > x86_64-pc-linux-musl-gcc -v -static -Os -g hello.c
> >
> > Built and runs fine on local machine, but when I put the binary on
> > another machine, it dumped the core with an ilegal instruction.  gdb
> > claims illegal instruction in __copy_tls().
> >
> > I have been able to compile this program after building the musl-gcc
> > wrapper and it works on both machines, but I need the cross toolchain
> > for C++ support.  The -v in the commandline above prints messages that
> > indicate it is using musl from what I can tell.
> >
> > Can anyone point me in the right direction or help me figure out what
> > I am missing?
>
> Can you show the gdb backtrace, disassembly at the point of crash, and
> an strace leading up to it?
>
> My best guess is that your toolchain is producing binaries for some
> non-baseline level of x86_64 ISA, and the machine you're trying to run
> it on does not support some of the instructions used.
>
> Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.