]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-119525: Fix deadlock with `_PyType_Lookup` and the GIL (#119527)
authorSam Gross <colesbury@gmail.com>
Wed, 29 May 2024 19:26:04 +0000 (15:26 -0400)
committerGitHub <noreply@github.com>
Wed, 29 May 2024 19:26:04 +0000 (15:26 -0400)
commitc22323cd1c200ca1b22c47af95f67c4b2d661fe7
treefe4c2852469f1ef8c57c52e1ff0c75b9793e12a1
parentdf93f5d4bf9d70036d485666d4dd4f009d37f8b9
gh-119525: Fix deadlock with `_PyType_Lookup` and the GIL (#119527)

The deadlock only affected the free-threaded build and only occurred
when the GIL was enabled at runtime. The `Py_DECREF(old_name)` call
might temporarily release the GIL while holding the type seqlock.
Another thread may spin trying to acquire the seqlock while holding the
GIL.

The deadlock occurred roughly 1 in ~1,000 runs of `pool_in_threads.py`
from `test_multiprocessing_pool_circular_import`.
Misc/NEWS.d/next/Core and Builtins/2024-05-24-21-04-00.gh-issue-119525.zLFLf1.rst [new file with mode: 0644]
Objects/typeobject.c