Fix "Exception ignored" in weakref callback during interpreter shutdown. #174
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.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #173. Under some circumstances "Exception ignored in: <function WeakMethod.new.._cb at 0x770cbdb5b9c0>" appears during interpreter shutdown.
Root cause is probably a weakref callback running here from an interpeter shutdown finalizer pass, and then calling _disconnect either causes the same weakref to be cleaned up again or calls into some other already-gone resource and triggers the error.
No test is added for this, as noted in the linked issue it seems to only appear under some particular ordering of finalizers. However, there should be minimal risk of regressions as
sys.is_finalizing()
is only set when the Python environment is going away.Thanks for all your work on blinker!