[Lldb-commits] [lldb] r355406 - Revert "Fix embedded Python initialization according to changes in version 3.7"

Davide Italiano via lldb-commits lldb-commits at lists.llvm.org
Tue Mar 5 07:53:07 PST 2019


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 at 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 at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


More information about the lldb-commits mailing list