gh-130091: Reorder _PyThreadState_Attach
to avoid data race
#130092
Merged
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.
This moves
tstate_activate()
down to avoid a data race in the free threading build on the_PyRuntime
's thread-localautoTSSkey
. This key is deleted during runtime finalization, which may happen concurrently with a call to_PyThreadState_Attach
.The earlier
tstate_try/wait_attach
ensures that the thread is blocked before it attempts to access the deletedautoTSSkey
.This fixes a TSAN reported data race in
test_threading.test_import_from_another_thread
.PyThread_tss_delete
and_PyThreadState_Attach
#130091