|
Message-ID: <CADFzTteA+ZzWfi7yLvm8Rcq_iKK7ya-efbMWT+ymbAEZNNWZ2Q@mail.gmail.com> Date: Tue, 19 Jan 2021 14:00:14 -0800 From: Rasmus Andersson <rasmus@...ion.se> To: Rich Felker <dalias@...c.org> Cc: musl@...ts.openwall.com Subject: Re: waitpid (wait4) on Linux 5 returns invalid values That was compiled using https://more.musl.cc/10/x86_64-linux-musl/x86_64-linux-musl-native.tgz on Alpine Linux in a docker container (alpine:3.12) Full repro: $ wget https://more.musl.cc/10/x86_64-linux-musl/x86_64-linux-musl-native.tgz $ tar -xf x86_64-linux-musl-native.tgz $ cat << EOF > a.c #include <sys/wait.h> #include <stdio.h> #include <errno.h> #include <string.h> int main(int argc, char **argv) { int wstat = 0; pid_t child = waitpid(-1, &wstat, WNOHANG); printf("waitpid returned %d, wstat=%d, errno=%d (%s)\n", child, wstat, errno, strerror(errno)); return 0; } EOF $ x86_64-linux-musl-native/bin/gcc -static a.c $ ./a.out waitpid returned -10, wstat=0, errno=0 (No error information) On Tue, Jan 19, 2021 at 1:16 PM Rich Felker <dalias@...c.org> wrote: > > On Tue, Jan 19, 2021 at 12:35:26PM -0800, Rasmus Andersson wrote: > > Relevant parts from disassembly: (objdump --disassemble --source > > --line-numbers a.out) > > > > 0000000000401f61 <__syscall_cp_c>: > > sccp(): > > 401f61: 48 89 f8 mov %rdi,%rax > > 401f64: 4d 89 c2 mov %r8,%r10 > > 401f67: 48 89 f7 mov %rsi,%rdi > > 401f6a: 4d 89 c8 mov %r9,%r8 > > 401f6d: 48 89 d6 mov %rdx,%rsi > > 401f70: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 > > 401f75: 48 89 ca mov %rcx,%rdx > > 401f78: 0f 05 syscall > > 401f7a: c3 retq > > > > 0000000000401f7b <__syscall_cp>: > > __syscall_cp(): > > 401f7b: e9 e1 ff ff ff jmpq 401f61 <__syscall_cp_c> > > > > 00000000004004fd <waitpid>: > > waitpid(): > > ... > > 40051a: e8 5c 1a 00 00 callq 401f7b <__syscall_cp> > > 40051f: 48 83 c4 18 add $0x18,%rsp > > 400523: c3 retq > > This disassembly shows a miscompiled (or compiled with wrong patches) > waitpid. It should be a tail call to __syscall_ret, not a retq. > > 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.