[issue15896] Sporadic EINVAL in nonblocking pipe os.read when forked child fails on Mac OS

Charles-François Natali report at bugs.python.org
Wed Sep 19 22:12:41 CEST 2012


Charles-François Natali added the comment:

> Option 1:
> Fix breakages as they are discovered at higher level (above os.read) as needed in places where usage semantics are known, and address the issue via errata documentation (i.e., "On Mac OS X, don't make individual pipe read requests that would result in os.read() buffersize arg being above 127KB on non-blocking pipes."); should also check if the same issue occurs with sockets (e.g., socket.socketpair() instead of os.pipe()) to make the errata more complete.  This may be perfectly acceptable and how things have worked for a long time.

> Implement a work-around in the lowest common denominator wrapper function, so that anything in Python that needs to call read() and could benefit from this work-around, would call that wrapper instead of read().  The read() work-around might go something like this in *pseudocode*:

It's not Python's job to workaround stupid platform bugs, or document
them: that would lead to unmanagable code or unmaintanable
documentation.
This particular issue will get fixed as part of
http://bugs.python.org/issue15918, and I'm -10 against adding an hack
to posix.read().

So I'd suggest closing this, and urge people to complain to the OS-X folks.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue15896>
_______________________________________


More information about the Python-bugs-list mailing list