Message307700
According to https://developer.apple.com/library/content/qa/qa1541/_index.html some bugs were fixed in 10.5. Not sure if the original attempt to patch the problem was happening on < 10.5, or if this was still a problem in 10.5+.
I can't for the life of me find it again, but I had found another source that claimed the true fixes for OS X came out with 10.7.
In any case, because this code is specifically part of the multiprocessing package, whereby it should be *expected* for multiple processes to be accessing the pipe, it's disastrous for this code to be reading/writing an acknowledge packet in this manner.
This is a hard case to test for, as timing matters. The duplex pipe doesn't get confused/corrupted unless one process is sending/receiving a message over the pipe at the same moment that another process is executing your acknowledge logic. It's reproducible, but not 100%.
Personally, I've restructured to using one pipe exclusively for file descriptor passing, and using a separate Queue (or Pipe pair) for custom message passing. If a better fix cannot be established, at a minimum the documentation for multiprocessing and the Pipe class should be updated with a big red warning about passing file descriptors on OS X/macOS/darwin. |
|
Date |
User |
Action |
Args |
2017-12-06 04:08:14 | frickenate | set | recipients:
+ frickenate, ronaldoussoren, pitrou, ned.deily, davin |
2017-12-06 04:08:14 | frickenate | set | messageid: <1512533294.1.0.213398074469.issue32220@psf.upfronthosting.co.za> |
2017-12-06 04:08:14 | frickenate | link | issue32220 messages |
2017-12-06 04:08:12 | frickenate | create | |
|