Message136618
The real issue is that the libc defines O_CLOEXEC, but kernels prior to 2.6.23 don't support it: instead of returning EINVAL, the socket syscall silently ignores the flag (don't know why I made the comment about this flag being defined to 0...).
IMHO this is really a distribution packaging bug (kernel/libc mismatch), and a quite serious one.
I don't think we should be fixing this in Python, but that we should merely skip this test on kernels older than 2.6.23.
People should complain to their distributions vendors instead (I tested this on RHEL4, RHEL6 and Debian Squeeze without problem).
I personally don't like the idea of a best-effort O_CLOEXEC implementation: providing a O_CLOEXEC flag which is not atomic feels really wrong to me. |
|
Date |
User |
Action |
Args |
2011-05-23 12:06:40 | neologix | set | recipients:
+ neologix, georg.brandl, amaury.forgeotdarc, pitrou, vstinner, socketpair, python-dev, petri.lehtinen, alexey-smirnov |
2011-05-23 12:06:40 | neologix | set | messageid: <1306152400.31.0.957876973426.issue12105@psf.upfronthosting.co.za> |
2011-05-23 12:06:39 | neologix | link | issue12105 messages |
2011-05-23 12:06:39 | neologix | create | |
|