Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upbpo-38076: Fix crash on shutdown caused by PEP-384ification of _struct #18038
+27
−26
Conversation
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
DinoV commentedJan 17, 2020
•
edited by bedevere-bot
I think this is a partial fix for _struct crashing on shutdown after the PEP-384ification of it when using the multi-processing class with a finalizer:
from multiprocessing.pool import Pool
class A(object):
def init(self):
self.pool = Pool()
def del(self):
self.pool.close()
self.pool.join()
a = A()
Although I still see this hanging on Linux instead of cleaning shutting down.
There are still some other issues related to shutdown that this doesn't yet fix. Fixing other cases will likely require storing the module object off of the struct type object so that it can be retrieved later.
Feedback welcome, it might be better to fix this in a global manner by changing the finalization code to not clear the module list so early, but that seems like a much more significant change.
https://bugs.python.org/issue38076