Syscalls traced by truss.
Parent process:
1436: unlink("fifo_5950861521") ERR#2 'No such file or directory'
1436: open("fifo_5950861521",O_WRONLY|O_CLOEXEC,00) ERR#4 'Interrupted system call'
1436: open("fifo_5950861521",O_WRONLY|O_CLOEXEC,00) ERR#4 'Interrupted system call'
...
1436: open("fifo_5950861521",O_WRONLY|O_CLOEXEC,00) ERR#4 'Interrupted system call'
Child process:
2689: open("fifo_5950861521",O_CLOEXEC,00) = 3 (0x3)
2689: close(3) ERR#4 'Interrupted system call'
Hum, it looks like the child process gets signals, many syscalls are interrupted by signals. In my simple test, 7 syscalls were interrupted by signals in the child process. I didn't expect "setitimer" to be inherited by subprocess.Popen.
The suspicious thing is that close() fails with EINTR in the child process and it is not retried. |