summaryrefslogtreecommitdiffstats
path: root/Python/pystate.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-12-13 00:46:43 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2013-12-13 00:46:43 (GMT)
commit62ca10051b5aa07b86807a50674dbef4cace22f7 (patch)
treea44e3375e425b589df8b8131f1c7f4b05b1979d8 /Python/pystate.c
parent56668dc187d9b77b76c8906a8e23198314aec18a (diff)
downloadcpython-62ca10051b5aa07b86807a50674dbef4cace22f7.zip
cpython-62ca10051b5aa07b86807a50674dbef4cace22f7.tar.gz
cpython-62ca10051b5aa07b86807a50674dbef4cace22f7.tar.bz2
Close #19576: PyGILState_Ensure() now initializes threads. At startup, Python
has no concrete GIL. If PyGILState_Ensure() is called from a new thread for the first time and PyEval_InitThreads() was not called yet, a GIL needs to be created.
Diffstat (limited to 'Python/pystate.c')
-rw-r--r--Python/pystate.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/Python/pystate.c b/Python/pystate.c
index 6be71de..a56e308 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -771,6 +771,11 @@ PyGILState_Ensure(void)
assert(autoInterpreterState); /* Py_Initialize() hasn't been called! */
tcur = (PyThreadState *)PyThread_get_key_value(autoTLSkey);
if (tcur == NULL) {
+ /* At startup, Python has no concrete GIL. If PyGILState_Ensure() is
+ called from a new thread for the first time, we need the create the
+ GIL. */
+ PyEval_InitThreads();
+
/* Create a new thread state for this thread */
tcur = PyThreadState_New(autoInterpreterState);
if (tcur == NULL)