bpo-37788: fix reference leak caused by threading._shutdown_locks#15175
Closed
akruis wants to merge 2 commits intopython:mainfrom
Closed
bpo-37788: fix reference leak caused by threading._shutdown_locks#15175akruis wants to merge 2 commits intopython:mainfrom
akruis wants to merge 2 commits intopython:mainfrom
Conversation
The test must not leak references, if called with python -m test -R: test_threading
Discard per thread shutdown locks from threading._shutdown_locks when the thread-state gets deleted.
Member
|
I proposed a different approach: PR #15228 adds a |
Contributor
|
@vstinner, should this be closed as the other PR has been merged for this issue? Thanks. |
vadmium
reviewed
Dec 11, 2020
| Py_INCREF(shutdown_locks); | ||
| data[2] = shutdown_locks; | ||
|
|
||
| tstate->on_delete_data = (void *) data; |
Member
There was a problem hiding this comment.
On_delete_data is no longer just a weak reference to a lock, so the comment in Include/cpython/pystate.h is out of date.
Member
|
PR #26103 is an arguably simpler fix for this (it doesn't complicate the C side). |
Member
|
PR #26103 is merged, closing this. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
If a program creates non-daemon threads but does not join them, the global set
threading._shutdown_locksaccumulates the shutdown locks of the threads.This pull request adds a test case for non-daemon threads without join. The test must not leak references, if called with
python -m test -R: test_threading.This pull request also fixes the reference leak. The
tstate->on_delete-hook now discards per thread shutdown locks from threading._shutdown_locks.https://bugs.python.org/issue37788