From 2914bb32e2adf8dff77c0ca58b33201bc94e398c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 29 Jan 2018 11:57:45 +0100 Subject: bpo-20891: Py_Initialize() now creates the GIL (#4700) The GIL is no longer created "on demand" to fix a race condition when PyGILState_Ensure() is called in a non-Python thread. --- Python/pylifecycle.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Python/pylifecycle.c') diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index d46784a2f6..82ab915425 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -681,9 +681,13 @@ _Py_InitializeCore(const _PyCoreConfig *core_config) Instead we destroy the previously created GIL here, which ensures that we can call Py_Initialize / Py_FinalizeEx multiple times. */ _PyEval_FiniThreads(); + /* Auto-thread-state API */ _PyGILState_Init(interp, tstate); + /* Create the GIL */ + PyEval_InitThreads(); + _Py_ReadyTypes(); if (!_PyFrame_Init()) -- cgit v1.2.1