STINNER Victor added the comment:

Ok, I'm now quite sure that it's a bug in the FreeBSD kernel or in the BSD C 
library.

The C library ignores EINTR: if the close() syscalls fails with EINTR, the C 
close() function returns a success.

When the close() syscall fails with EINTR, the test hangs. It's unclear to me 
if the close() syscall fails with EINTR in the parent or in the child process. 
I'm quite sure that the FreeBSD truss tool (tool to trace syscalls) has bugs 
too, so it's hard to be sure what happens exactly.

Attached tarball eintr_bug.tar.gz reproduces the bug in a program written in 
pure C language. So it's not a bug in Python.

For test_eintr, we should skip the test on FreeBSD (until the bug is fixed in 
FreeBSD).

----------
Added file: http://bugs.python.org/file40485/eintr_bug.tar.gz

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue25122>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to