NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/52342: linux ABI exit(non-zero) returns zero status to the parent process
Thanks for paying attention.
On Mon, Jun 26, 2017 at 11:40:01AM +0000, matthew green wrote:
> space-bird ~> file /emul/linux/usr/bin/false /emul/linux32/usr/bin/false
> /emul/linux/usr/bin/false: ELF 64-bit LSB executable, x86-64, version 1 =
> (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, Build=
> ID[sha1]=3D87be6d24cdaaa0afd60da1ad48c016f5ea709410, stripped
> /emul/linux32/usr/bin/false: ELF 32-bit LSB executable, Intel 80386, versi=
> on 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, =
> BuildID[sha1]=3D9d82388dd6116aa6920afeba401ac10b80906fff, stripped
> space-bird ~> /emul/linux/usr/bin/false || echo good
> good
> space-bird ~> /emul/linux32/usr/bin/false || echo good
> good
>
> can you ktrace your binaries and see what happens?
Sure:
-----------------------
$ file cat
cat: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped
$ ./cat /nosuchfile && echo BAD
cat: /nosuchfile: No such file or directory
BAD
$ ktrace ./cat /nosuchfile
cat: /nosuchfile: No such file or directory
$ kdump
9256 1 ktrace EMUL "netbsd"
9256 1 ktrace CALL execve(0x7f7ffffffe7f,0x7f7fffffdcc0,0x7f7fffffdcd8)
9256 1 ktrace NAMI "./cat"
9256 1 cat NAMI "/emul/linux32"
9256 9256 cat EMUL "linux32"
9256 9256 cat RET execve -1 errno -2 No such file or directory
9256 9256 cat CALL open(0xbffffe56,0,0)
9256 9256 cat NAMI "/nosuchfile"
9256 9256 cat RET open -1 errno -2 No such file or directory
9256 9256 cat CALL netbsd32_write(2,0x80485bc,5)
9256 9256 cat GIO fd 2 wrote 5 bytes
"cat: "
9256 9256 cat RET netbsd32_write 5
9256 9256 cat CALL netbsd32_write(2,0xbffffe56,0xb)
9256 9256 cat GIO fd 2 wrote 11 bytes
"/nosuchfile"
9256 9256 cat RET netbsd32_write 11/0xb
9256 9256 cat CALL netbsd32_write(2,0x80485b8,2)
9256 9256 cat GIO fd 2 wrote 2 bytes
": "
9256 9256 cat RET netbsd32_write 2
9256 9256 cat CALL netbsd32_write(2,0x8048898,0x19)
9256 9256 cat GIO fd 2 wrote 25 bytes
"No such file or directory"
9256 9256 cat RET netbsd32_write 25/0x19
9256 9256 cat CALL netbsd32_write(2,0x80485b4,1)
9256 9256 cat GIO fd 2 wrote 1 bytes
"\n"
9256 9256 cat RET netbsd32_write 1
9256 9256 cat CALL exit(1)
$ uname -a
NetBSD XXXX 7.1 NetBSD 7.1 (GENERIC.201703111743Z) amd64
-----------------------
My guess is that your test binaries do not use exit() but rather
exit_group(). The use of old-style syscalls apparently is rare
nowadays but as long as exit() is supported it would be nice if it
behaves.
Home |
Main Index |
Thread Index |
Old Index