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)                     = ?

Reply via email to