[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 08:25:39 PST 2019


After the revert the testsuite doesn't hang anymore, so, it looks like
this was responsible. Stella, is the bot actually running python 3.6 ?
Can you make sure there's no python 3.7 installed somewhere in the
system that gets picked by accident?

On Tue, Mar 5, 2019 at 7:59 AM Davide Italiano <dccitaliano at gmail.com> wrote:
>
> I'm also at a loss trying to understand how this particular change
> could've caused the tests to hang.
>
>   __VSCMD_PREINIT_PATH=C:\Program Files (x86)\Microsoft Visual
> Studio\Shared\Python36_64\Scripts\;C:\Program Files (x86)\Microsoft
> Visual Studio\Shared\Python36_64\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program
> Files\dotnet\;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program
> Files\CMake\bin;C:\Program Files (x86)\swigwin-3.0.12;C:\Program Files
> (x86)\GetGnuWin32\gnuwin32\bin;c:\Python27\Scripts\;C:\Program Files
> (x86)\Ninja;C:\Program Files\Git\cmd;C:\Program
> Files\TortoiseSVN\bin;C:\Users\buildslave\AppData\Local\Microsoft\WindowsApps;C:\Python27\lib\site-packages\pywin32_system32;C:\Python27\lib\site-packages\pywin32_system32
>  using PTY: False
>
>
> This is what I see on the Windows bot, so, I expect that it runs
> Python 3.6, but the whole fix is conditional to PY_MAJOR_VERSION == 3
> && PY_MINOR_VERSION >= 7.
>
> On Tue, Mar 5, 2019 at 7:53 AM Davide Italiano <dccitaliano at gmail.com> wrote:
> >
> > 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