From: Victor Stinner Date: Tue, 19 Mar 2019 13:19:38 +0000 (+0100) Subject: bpo-36333, bpo-36356: Fix _PyEval_FiniThreads() (GH-12432) X-Git-Tag: v3.8.0a3~58 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a712679a2bffffefaacdc05f788d6ea50f72a561;p=thirdparty%2FPython%2Fcpython.git bpo-36333, bpo-36356: Fix _PyEval_FiniThreads() (GH-12432) _PyEval_FiniThreads() now free the pending lock. --- diff --git a/Python/ceval.c b/Python/ceval.c index d6a0b335955e..40320bf35703 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -169,8 +169,10 @@ PyEval_ThreadsInitialized(void) void PyEval_InitThreads(void) { - if (gil_created()) + if (gil_created()) { return; + } + PyThread_init_thread(); create_gil(); take_gil(_PyThreadState_GET()); @@ -184,10 +186,17 @@ PyEval_InitThreads(void) void _PyEval_FiniThreads(void) { - if (!gil_created()) + if (!gil_created()) { return; + } + destroy_gil(); assert(!gil_created()); + + if (_PyRuntime.ceval.pending.lock != NULL) { + PyThread_free_lock(_PyRuntime.ceval.pending.lock); + _PyRuntime.ceval.pending.lock = NULL; + } } void