_multiprocessing Connection methods don't check if handle is valid or not. If you close the socket/pipe, Python may crash on operations, especially in poll() on FD_SET(...handle, &rdfs). Example of crash: ---------------------- import _multiprocessing obj = _multiprocessing.Connection(755) obj.close() obj.poll() ---------------------- Attached patch is a proposition of fix to check handle in all Connection methods using the handle.
This issue is not critical anymore because jesse.noller fixed the crash in r68768. Python 2.7a0 (trunk:68873M, Jan 23 2009, 08:46:25) [GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import _multiprocessing >>> obj = _multiprocessing.Connection(755) >>> obj.close() >>> obj.poll() Traceback (most recent call last): File "", line 1, in IOError: handle out of range in select() I would prefer a message "I/O operation on closed socket", but you can close this issue. Note: I proposed a similar patch to improve the error message ("I/O operation on closed socket") for the socket module in issue #4853.