Hi, I don't have an explanation for this. I'm working with libvirt 0.9.1 which pulls in gnulib. When I build on a bare machine or a minimal lxc container, test-poll passes. When I build in an schroot, it fails because when it does a poll after the other end has shut down, it does not get the expected POLLHUP|POLLER. Instrumented debug output looks like:
Unconnected socket test... Connected sockets test... Unconnected socket test... passed General socket test with fork... Connected sockets test... passed poll1_wait returned 0x5, POLLHUP|POLLER is 0x18 # define POLLIN 0x0001 /* any readable data available */ # define POLLOUT 0x0004 /* file descriptor is writeable */ failed (expecting POLLHUP after shutdown) failed General socket test with fork General socket test with fork... failed (expecting POLLHUP after shutdown) failed General socket test with fork Pipe test... Pipe test... passed strace output for both is attached. The child exits before the poll in either case. Any ideas? thanks, -serge
5025 execve("./test-poll", ["./test-poll"], [/* 13 vars */]) = 0 5025 brk(0) = 0x1695000 5025 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 5025 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8d567a4000 5025 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) 5025 open("/etc/ld.so.cache", O_RDONLY) = 3 5025 fstat(3, {st_mode=S_IFREG|0644, st_size=31935, ...}) = 0 5025 mmap(NULL, 31935, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8d5679c000 5025 close(3) = 0 5025 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 5025 open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY) = 3 5025 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\\\0\0\0\0\0\0"..., 832) = 832 5025 fstat(3, {st_mode=S_IFREG|0755, st_size=140254, ...}) = 0 5025 mmap(NULL, 2217000, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8d56368000 5025 mprotect(0x7f8d56380000, 2097152, PROT_NONE) = 0 5025 mmap(0x7f8d56580000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7f8d56580000 5025 mmap(0x7f8d56582000, 13352, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8d56582000 5025 close(3) = 0 5025 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 5025 open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3 5025 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\360\1\0\0\0\0\0"..., 832) = 832 5025 fstat(3, {st_mode=S_IFREG|0755, st_size=1638120, ...}) = 0 5025 mmap(NULL, 3749080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8d55fd4000 5025 mprotect(0x7f8d5615e000, 2093056, PROT_NONE) = 0 5025 mmap(0x7f8d5635d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x189000) = 0x7f8d5635d000 5025 mmap(0x7f8d56362000, 21720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8d56362000 5025 close(3) = 0 5025 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8d5679b000 5025 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8d56799000 5025 arch_prctl(ARCH_SET_FS, 0x7f8d56799720) = 0 5025 mprotect(0x7f8d5635d000, 16384, PROT_READ) = 0 5025 mprotect(0x7f8d56580000, 4096, PROT_READ) = 0 5025 mprotect(0x601000, 4096, PROT_READ) = 0 5025 mprotect(0x7f8d567a6000, 4096, PROT_READ) = 0 5025 munmap(0x7f8d5679c000, 31935) = 0 5025 set_tid_address(0x7f8d567999f0) = 5025 5025 set_robust_list(0x7f8d56799a00, 0x18) = 0 5025 futex(0x7fff387fcf8c, FUTEX_WAKE_PRIVATE, 1) = 0 5025 futex(0x7fff387fcf8c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7f8d56799720) = -1 EAGAIN (Resource temporarily unavailable) 5025 rt_sigaction(SIGRTMIN, {0x7f8d5636d740, [], SA_RESTORER|SA_SIGINFO, 0x7f8d56377c60}, NULL, 8) = 0 5025 rt_sigaction(SIGRT_1, {0x7f8d5636d7d0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f8d56377c60}, NULL, 8) = 0 5025 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 5025 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 5025 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 8), ...}) = 0 5025 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8d567a3000 5025 write(1, "Unconnected socket test... ", 27) = 27 5025 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 5025 bind(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 5025 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 5025 listen(3, 1) = 0 5025 poll([{fd=3, events=POLLIN|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) 5025 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 5025 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR) 5025 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 5025 connect(4, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 5025 poll([{fd=3, events=POLLIN|POLLRDNORM|POLLRDBAND}], 1, -1) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}]) 5025 poll([{fd=3, events=POLLIN|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLIN}]) 5025 poll([{fd=3, events=POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLRDNORM}]) 5025 accept(3, {sa_family=AF_INET, sin_port=htons(33182), sin_addr=inet_addr("127.0.0.1")}, [16]) = 5 5025 close(3) = 0 5025 close(4) = 0 5025 close(5) = 0 5025 write(1, "passed\n", 7) = 7 5025 write(1, "Connected sockets test... ", 26) = 26 5025 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 5025 bind(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 5025 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 5025 listen(3, 1) = 0 5025 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 5025 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR) 5025 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 5025 connect(4, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 5025 accept(3, {sa_family=AF_INET, sin_port=htons(33183), sin_addr=inet_addr("127.0.0.1")}, [16]) = 5 5025 close(3) = 0 5025 poll([{fd=5, events=POLLIN|POLLOUT|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, -1) = 1 ([{fd=5, revents=POLLOUT|POLLWRNORM}]) 5025 poll([{fd=5, events=POLLIN|POLLOUT|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=5, revents=POLLOUT}]) 5025 poll([{fd=5, events=POLLIN|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=5, revents=POLLWRNORM}]) 5025 write(5, "foo", 3) = 3 5025 poll([{fd=4, events=POLLIN|POLLRDNORM}], 1, -1) = 1 ([{fd=4, revents=POLLIN|POLLRDNORM}]) 5025 poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}]) 5025 poll([{fd=4, events=POLLRDNORM}], 1, 0) = 1 ([{fd=4, revents=POLLRDNORM}]) 5025 read(4, "foo", 3) = 3 5025 close(4) = 0 5025 write(5, "foo", 3) = 3 5025 poll([{fd=5, events=POLLIN|POLLOUT}], 1, 0) = 1 ([{fd=5, revents=POLLIN|POLLOUT|POLLERR|POLLHUP}]) 5025 close(5) = 0 5025 write(1, "passed\n", 7) = 7 5025 write(1, "General socket test with fork..."..., 33) = 33 5025 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 5025 bind(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 5025 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 5025 listen(3, 1) = 0 5025 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f8d567999f0) = 5026 5025 close(3) = 0 5026 accept(3, <unfinished ...> 5025 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 5025 connect(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16 <unfinished ...> 5026 <... accept resumed> {sa_family=AF_INET, sin_port=htons(33184), sin_addr=inet_addr("127.0.0.1")}, [16]) = 4 5025 <... connect resumed> ) = 0 5026 close(3 <unfinished ...> 5025 poll([{fd=3, events=POLLOUT|POLLWRNORM|POLLRDBAND}], 1, 0 <unfinished ...> 5026 <... close resumed> ) = 0 5025 <... poll resumed> ) = 1 ([{fd=3, revents=POLLOUT|POLLWRNORM}]) 5026 write(4, "foo", 3 <unfinished ...> 5025 write(3, "foo", 3 <unfinished ...> 5026 <... write resumed> ) = 3 5025 <... write resumed> ) = 3 5026 read(4, <unfinished ...> 5025 wait4(-1, <unfinished ...> 5026 <... read resumed> "foo", 3) = 3 5026 shutdown(4, 0 /* receive */) = 0 5026 close(4) = 0 5026 exit_group(0) = ? 5025 <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 5026 5025 --- SIGCHLD (Child exited) @ 0 (0) --- 5025 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}]) 5025 read(3, "foo", 3) = 3 5025 write(3, "foo", 3) = 3 5025 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLIN|POLLOUT|POLLERR|POLLHUP}]) 5025 close(3) = 0 5025 write(1, "passed\n", 7) = 7 5025 write(1, "Pipe test... ", 13) = 13 5025 pipe([3, 4]) = 0 5025 poll([{fd=4, events=POLLIN|POLLOUT|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, -1) = 1 ([{fd=4, revents=POLLOUT|POLLWRNORM}]) 5025 poll([{fd=4, events=POLLIN|POLLOUT|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}]) 5025 poll([{fd=4, events=POLLIN|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=4, revents=POLLWRNORM}]) 5025 write(4, "foo", 3) = 3 5025 poll([{fd=3, events=POLLIN|POLLRDNORM}], 1, -1) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}]) 5025 poll([{fd=3, events=POLLIN}], 1, 0) = 1 ([{fd=3, revents=POLLIN}]) 5025 poll([{fd=3, events=POLLRDNORM}], 1, 0) = 1 ([{fd=3, revents=POLLRDNORM}]) 5025 read(3, "foo", 3) = 3 5025 close(3) = 0 5025 poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT|POLLERR}]) 5025 close(4) = 0 5025 write(1, "passed\n", 7) = 7 5025 exit_group(0) = ?
10427 execve("./test-poll", ["./test-poll"], [/* 41 vars */]) = 0 10427 brk(0) = 0x1bf9000 10427 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 10427 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff49942d000 10427 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) 10427 open("/etc/ld.so.cache", O_RDONLY) = 3 10427 fstat(3, {st_mode=S_IFREG|0644, st_size=19689, ...}) = 0 10427 mmap(NULL, 19689, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff499428000 10427 close(3) = 0 10427 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 10427 open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY) = 3 10427 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\\\0\0\0\0\0\0"..., 832) = 832 10427 fstat(3, {st_mode=S_IFREG|0755, st_size=140254, ...}) = 0 10427 mmap(NULL, 2217000, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff498ff1000 10427 mprotect(0x7ff499009000, 2097152, PROT_NONE) = 0 10427 mmap(0x7ff499209000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7ff499209000 10427 mmap(0x7ff49920b000, 13352, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff49920b000 10427 close(3) = 0 10427 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 10427 open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3 10427 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\357\1\0\0\0\0\0"..., 832) = 832 10427 fstat(3, {st_mode=S_IFREG|0755, st_size=1711704, ...}) = 0 10427 mmap(NULL, 3822808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff498c4b000 10427 mprotect(0x7ff498de6000, 2097152, PROT_NONE) = 0 10427 mmap(0x7ff498fe6000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19b000) = 0x7ff498fe6000 10427 mmap(0x7ff498feb000, 21720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff498feb000 10427 close(3) = 0 10427 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff499427000 10427 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff499425000 10427 arch_prctl(ARCH_SET_FS, 0x7ff499425720) = 0 10427 mprotect(0x7ff498fe6000, 16384, PROT_READ) = 0 10427 mprotect(0x7ff499209000, 4096, PROT_READ) = 0 10427 mprotect(0x601000, 4096, PROT_READ) = 0 10427 mprotect(0x7ff49942f000, 4096, PROT_READ) = 0 10427 munmap(0x7ff499428000, 19689) = 0 10427 set_tid_address(0x7ff4994259f0) = 10427 10427 set_robust_list(0x7ff499425a00, 0x18) = 0 10427 futex(0x7fff1b75a38c, FUTEX_WAKE_PRIVATE, 1) = 0 10427 futex(0x7fff1b75a38c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7ff499425720) = -1 EAGAIN (Resource temporarily unavailable) 10427 rt_sigaction(SIGRTMIN, {0x7ff498ff6740, [], SA_RESTORER|SA_SIGINFO, 0x7ff499000c60}, NULL, 8) = 0 10427 rt_sigaction(SIGRT_1, {0x7ff498ff67d0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7ff499000c60}, NULL, 8) = 0 10427 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 10427 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 10427 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 10), ...}) = 0 10427 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff49942c000 10427 write(1, "Unconnected socket test... ", 27) = 27 10427 write(2, "Unconnected socket test... ", 27) = 27 10427 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 10427 bind(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 10427 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 10427 listen(3, 1) = 0 10427 poll([{fd=3, events=POLLIN|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) 10427 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 10427 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR) 10427 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 10427 connect(4, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 10427 poll([{fd=3, events=POLLIN|POLLRDNORM|POLLRDBAND}], 1, -1) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}]) 10427 poll([{fd=3, events=POLLIN|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLIN}]) 10427 poll([{fd=3, events=POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLRDNORM}]) 10427 accept(3, {sa_family=AF_INET, sin_port=htons(36488), sin_addr=inet_addr("70.123.158.191")}, [16]) = 5 10427 close(3) = 0 10427 close(4) = 0 10427 close(5) = 0 10427 write(1, "passed\n", 7) = 7 10427 write(1, "Connected sockets test... ", 26) = 26 10427 write(2, "Connected sockets test... ", 26) = 26 10427 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 10427 bind(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 10427 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 10427 listen(3, 1) = 0 10427 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 10427 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR) 10427 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 10427 connect(4, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 10427 accept(3, {sa_family=AF_INET, sin_port=htons(36489), sin_addr=inet_addr("70.123.158.191")}, [16]) = 5 10427 close(3) = 0 10427 poll([{fd=5, events=POLLIN|POLLOUT|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, -1) = 1 ([{fd=5, revents=POLLOUT|POLLWRNORM}]) 10427 poll([{fd=5, events=POLLIN|POLLOUT|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=5, revents=POLLOUT}]) 10427 poll([{fd=5, events=POLLIN|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=5, revents=POLLWRNORM}]) 10427 write(5, "foo", 3) = 3 10427 poll([{fd=4, events=POLLIN|POLLRDNORM}], 1, -1) = 1 ([{fd=4, revents=POLLIN|POLLRDNORM}]) 10427 poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}]) 10427 poll([{fd=4, events=POLLRDNORM}], 1, 0) = 1 ([{fd=4, revents=POLLRDNORM}]) 10427 read(4, "foo", 3) = 3 10427 close(4) = 0 10427 write(5, "foo", 3) = 3 10427 poll([{fd=5, events=POLLIN|POLLOUT}], 1, 0) = 1 ([{fd=5, revents=POLLIN|POLLOUT|POLLERR|POLLHUP}]) 10427 close(5) = 0 10427 write(1, "passed\n", 7) = 7 10427 write(1, "General socket test with fork..."..., 33) = 33 10427 write(2, "General socket test with fork..."..., 33) = 33 10427 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 10427 bind(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 10427 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 10427 listen(3, 1) = 0 10427 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff4994259f0) = 10428 10427 close(3) = 0 10427 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 10427 connect(3, {sa_family=AF_INET, sin_port=htons(12345), sin_addr=inet_addr("127.0.0.1")}, 16 <unfinished ...> 10428 accept(3, <unfinished ...> 10427 <... connect resumed> ) = 0 10427 poll([{fd=3, events=POLLOUT|POLLWRNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLOUT|POLLWRNORM}]) 10428 <... accept resumed> {sa_family=AF_INET, sin_port=htons(36490), sin_addr=inet_addr("70.123.158.191")}, [16]) = 4 10427 write(3, "foo", 3 <unfinished ...> 10428 close(3 <unfinished ...> 10427 <... write resumed> ) = 3 10428 <... close resumed> ) = 0 10427 wait4(-1, <unfinished ...> 10428 write(4, "foo", 3) = 3 10428 read(4, "foo", 3) = 3 10428 shutdown(4, 0 /* receive */) = 0 10428 close(4) = 0 10428 exit_group(0) = ? 10427 <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 10428 10427 --- SIGCHLD (Child exited) @ 0 (0) --- 10427 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}]) 10427 read(3, "foo", 3) = 3 10427 write(3, "foo", 3) = 3 10427 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLIN|POLLOUT}]) 10427 write(2, "poll1_wait returned 5, POLLHUP|P"..., 44) = 44 10427 write(1, "failed (expecting POLLHUP after "..., 42) = 42 10427 write(2, "failed (expecting POLLHUP after "..., 42) = 42 10427 close(3) = 0 10427 write(1, "failed General socket test with "..., 37) = 37 10427 write(2, "failed General socket test with "..., 37) = 37 10427 write(1, "Pipe test... ", 13) = 13 10427 write(2, "Pipe test... ", 13) = 13 10427 pipe([3, 4]) = 0 10427 poll([{fd=4, events=POLLIN|POLLOUT|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, -1) = 1 ([{fd=4, revents=POLLOUT|POLLWRNORM}]) 10427 poll([{fd=4, events=POLLIN|POLLOUT|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}]) 10427 poll([{fd=4, events=POLLIN|POLLRDNORM|POLLWRNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=4, revents=POLLWRNORM}]) 10427 write(4, "foo", 3) = 3 10427 poll([{fd=3, events=POLLIN|POLLRDNORM}], 1, -1) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}]) 10427 poll([{fd=3, events=POLLIN}], 1, 0) = 1 ([{fd=3, revents=POLLIN}]) 10427 poll([{fd=3, events=POLLRDNORM}], 1, 0) = 1 ([{fd=3, revents=POLLRDNORM}]) 10427 read(3, "foo", 3) = 3 10427 close(3) = 0 10427 poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT|POLLERR}]) 10427 close(4) = 0 10427 write(1, "passed\n", 7) = 7 10427 exit_group(1) = ?