This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author davin
Recipients barry, davin, kapilt, ned.deily, pitrou, ronaldoussoren
Date 2018-11-14.18:11:26
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1542219086.85.0.788709270274.issue33725@psf.upfronthosting.co.za>
In-reply-to
Content
Barry's effort as well as comments in other links seem to all suggest that OBJC_DISABLE_INITIALIZE_FORK_SAFETY is not comprehensive in its ability to make other threads "safe" before forking.

"Objective-C classes defined by the OS frameworks remain fork-unsafe" (from @kapilt's first link) suggests we furthermore remain at risk using certain MacOS system libraries prior to any call to fork.

"To guarantee that forking is safe, the application must not be running any threads at the point of fork" (from @kapilt's second link) is an old truth that we continue to fight with even when we know very well that it's the truth.

For newly developed code, we have the alternative to employ spawn instead of fork to avoid these problems in Python, C, Ruby, etc.  For existing legacy code that employed fork and now surprises us by failing-fast on MacOS 10.13 and 10.14, it seems we are forced to face a technical debt incurred back when the choice was first made to spin up threads and afterwards to use fork.

If we didn't already have an "obvious" (zen of Python) way to avoid such problems with spawn versus fork, I would feel this was something to solve in Python.  As to helping the poor unfortunate souls who must fight the good fight with legacy code, I am not sure what to do to help though I would like to be able to help.
History
Date User Action Args
2018-11-14 18:11:26davinsetrecipients: + davin, barry, ronaldoussoren, pitrou, ned.deily, kapilt
2018-11-14 18:11:26davinsetmessageid: <1542219086.85.0.788709270274.issue33725@psf.upfronthosting.co.za>
2018-11-14 18:11:26davinlinkissue33725 messages
2018-11-14 18:11:26davincreate