summaryrefslogtreecommitdiffstats
path: root/Misc/NEWS.d/next
diff options
context:
space:
mode:
authorSam Gross <colesbury@gmail.com>2024-05-31 15:42:09 (GMT)
committerGitHub <noreply@github.com>2024-05-31 15:42:09 (GMT)
commit738cf216093e844c154f9ba36605f485fac5ff0d (patch)
tree0d8c7c81918c7e62cf540bd0d8e5a7fff5e2ef1c /Misc/NEWS.d/next
parentd4680b9e17815140b512a399069400794dae1f97 (diff)
downloadcpython-738cf216093e844c154f9ba36605f485fac5ff0d.zip
cpython-738cf216093e844c154f9ba36605f485fac5ff0d.tar.gz
cpython-738cf216093e844c154f9ba36605f485fac5ff0d.tar.bz2
[3.12] gh-119585: Fix crash involving `PyGILState_Release()` and `PyThreadState_Clear()` (GH-119753) (#119861)
Make sure that `gilstate_counter` is not zero in when calling `PyThreadState_Clear()`. A destructor called from `PyThreadState_Clear()` may call back into `PyGILState_Ensure()` and `PyGILState_Release()`. If `gilstate_counter` is zero, it will try to create a new thread state before the current active thread state is destroyed, leading to an assertion failure or crash. (cherry picked from commit bcc1be39cb1d04ad9fc0bd1b9193d3972835a57c)
Diffstat (limited to 'Misc/NEWS.d/next')
-rw-r--r--Misc/NEWS.d/next/C API/2024-05-29-21-05-59.gh-issue-119585.Sn7JL3.rst5
1 files changed, 5 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/C API/2024-05-29-21-05-59.gh-issue-119585.Sn7JL3.rst b/Misc/NEWS.d/next/C API/2024-05-29-21-05-59.gh-issue-119585.Sn7JL3.rst
new file mode 100644
index 0000000..038dec2
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2024-05-29-21-05-59.gh-issue-119585.Sn7JL3.rst
@@ -0,0 +1,5 @@
+Fix crash when a thread state that was created by :c:func:`PyGILState_Ensure`
+calls a destructor that during :c:func:`PyThreadState_Clear` that
+calls back into :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release`.
+This might occur when in the free-threaded build or when using thread-local
+variables whose destructors call :c:func:`PyGILState_Ensure`.