This is unfortunate, because I think it's the correct path forward. Stella, do you know why this is failing on Windows?
Thanks, -- Davide On Tue, Mar 5, 2019 at 7:26 AM Tatyana Krasnukha via lldb-commits <lldb-commits@lists.llvm.org> wrote: > > Author: tkrasnukha > Date: Tue Mar 5 07:27:33 2019 > New Revision: 355406 > > URL: http://llvm.org/viewvc/llvm-project?rev=355406&view=rev > Log: > Revert "Fix embedded Python initialization according to changes in version > 3.7" > > Testsuite hangs on Windows likely due to these changes. > > Modified: > > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > > Modified: > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp?rev=355406&r1=355405&r2=355406&view=diff > ============================================================================== > --- > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > (original) > +++ > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > Tue Mar 5 07:27:33 2019 > @@ -156,7 +156,7 @@ public: > if (m_was_already_initialized) { > Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT)); > LLDB_LOGV(log, "Releasing PyGILState. Returning to state = {0}locked", > - m_gil_state == PyGILState_UNLOCKED ? "un" : ""); > + m_was_already_initialized == PyGILState_UNLOCKED ? "un" : > ""); > PyGILState_Release(m_gil_state); > } else { > // We initialized the threads in this function, just unlock the GIL. > @@ -180,18 +180,6 @@ private: > } > > void InitializeThreadsPrivate() { > -// Since Python 3.7 `Py_Initialize` calls `PyEval_InitThreads` inside itself, > -// so there is no way to determine whether the embedded interpreter > -// was already initialized by some external code. `PyEval_ThreadsInitialized` > -// would always return `true` and `PyGILState_Ensure/Release` flow would be > -// executed instead of unlocking GIL with `PyEval_SaveThread`. When > -// an another thread calls `PyGILState_Ensure` it would get stuck in > deadlock. > -#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 7) || (PY_MAJOR_VERSION > > 3) > -// The only case we should go further and acquire the GIL: it is unlocked. > - if (PyGILState_Check()) > - return; > -#endif > - > if (PyEval_ThreadsInitialized()) { > Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT)); > > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits