https://github.com/python/cpython/commit/dae3e8250f8013e83b2901df7a58e06e62f5e9d8 commit: dae3e8250f8013e83b2901df7a58e06e62f5e9d8 branch: 3.15 author: Miss Islington (bot) <[email protected]> committer: serhiy-storchaka <[email protected]> date: 2026-10-10T13:25:36+03:00 summary:
[3.15] gh-154937: Fix `_thread._shutdown()` racing with `_thread.start_joinable_thread` on `ThreadHandle.ident` (GH-155085) (GH-155123) (cherry picked from commit a4095ee272f5e5082281a94a0856dde3c2f323f9) Co-authored-by: Edward Xu <[email protected]> files: A Misc/NEWS.d/next/Core_and_Builtins/2026-08-02-17-55-29.gh-issue-154937.m9IBba.rst M Modules/_threadmodule.c diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-08-02-17-55-29.gh-issue-154937.m9IBba.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-08-02-17-55-29.gh-issue-154937.m9IBba.rst new file mode 100644 index 00000000000000..475dc8358a8d81 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-08-02-17-55-29.gh-issue-154937.m9IBba.rst @@ -0,0 +1,3 @@ +Fix a data race on thread handle identifiers when ``_thread._shutdown()`` +runs concurrently with the startup of non-daemon threads in the +:term:`free-threaded build`. diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index e999fe20287e2d..199e4ac3db723b 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -2413,7 +2413,7 @@ thread_shutdown(PyObject *self, PyObject *args) struct llist_node *node; llist_for_each_safe(node, &state->shutdown_handles) { ThreadHandle *cur = llist_data(node, ThreadHandle, shutdown_node); - if (cur->ident != ident) { + if (ThreadHandle_ident(cur) != ident) { ThreadHandle_incref(cur); handle = cur; break; _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
