]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-108987: Fix _thread.start_new_thread() race condition (#109135)
authorVictor Stinner <vstinner@python.org>
Mon, 11 Sep 2023 15:27:03 +0000 (17:27 +0200)
committerGitHub <noreply@github.com>
Mon, 11 Sep 2023 15:27:03 +0000 (17:27 +0200)
commit517cd82ea7d01b344804413ef05610934a43a241
tree733959eb7944699c65275e5108be00b8dbc7a061
parentc0f488b88f2a54d76256818e2841d868fecfd396
gh-108987: Fix _thread.start_new_thread() race condition (#109135)

Fix _thread.start_new_thread() race condition. If a thread is created
during Python finalization, the newly spawned thread now exits
immediately instead of trying to access freed memory and lead to a
crash.

thread_run() calls PyEval_AcquireThread() which checks if the thread
must exit. The problem was that tstate was dereferenced earlier in
_PyThreadState_Bind() which leads to a crash most of the time.

Move _PyThreadState_CheckConsistency() from thread_run() to
_PyThreadState_Bind().
Include/internal/pycore_pystate.h
Misc/NEWS.d/next/Library/2023-09-08-12-09-55.gh-issue-108987.x5AIG8.rst [new file with mode: 0644]
Modules/_threadmodule.c
Python/ceval_gil.c
Python/pystate.c