issue with lldb9 and python3.5

Hi everyone,

I have lldb crashing since I’ve updated to lldb9. Seems like there is a issue with python3.5. Everything seems to work fine with python3.7.
Am I missing something? Or is it a known issue?

$ lldb
(lldb) script
#0 0x00007f3d324c9c2a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/home/rjodin/work/dpu_tools3/build/lib/libLLVM-9.so+0x6bfc2a)
#1 0x00007f3d324c7af5 llvm::sys::RunSignalHandlers() (/home/rjodin/work/dpu_tools3/build/lib/libLLVM-9.so+0x6bdaf5)
#2 0x00007f3d324c7c0c SignalHandler(int) (/home/rjodin/work/dpu_tools3/build/lib/libLLVM-9.so+0x6bdc0c)
#3 0x00007f3d31bfe0e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x110e0)
#4 0x00007f3d2d18f81b PyModule_GetState (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x6881b)
#5 0x00007f3d230e1621 _init (/usr/lib/python3.5/lib-dynload/readline.cpython-35m-x86_64-linux-gnu.so+0x3621)
#6 0x00007f3d2e3dece1 rl_initialize (/usr/lib/x86_64-linux-gnu/libedit.so.2+0x1dce1)
#7 0x00007f3d230e1f3e _init (/usr/lib/python3.5/lib-dynload/readline.cpython-35m-x86_64-linux-gnu.so+0x3f3e)
#8 0x00007f3d2d32d710 _PyImport_LoadDynamicModuleWithSpec (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x206710)
#9 0x00007f3d2d330fe7 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x209fe7)
#10 0x00007f3d2d198259 PyCFunction_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x71259)
#11 0x00007f3d2d2c8ff2 PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a1ff2)
#12 0x00007f3d2d38b074 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264074)
#13 0x00007f3d2d2c7adf PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a0adf)
#14 0x00007f3d2d2c96ad PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a26ad)
#15 0x00007f3d2d2c96ad PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a26ad)
#16 0x00007f3d2d2c96ad PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a26ad)
#17 0x00007f3d2d2c96ad PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a26ad)
#18 0x00007f3d2d38b074 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264074)
#19 0x00007f3d2d38b153 PyEval_EvalCodeEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264153)
#20 0x00007f3d2d21e558 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0xf7558)
#21 0x00007f3d2d2faa37 PyObject_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1d3a37)
#22 0x00007f3d2d2fce1b _PyObject_CallMethodIdObjArgs (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1d5e1b)
#23 0x00007f3d2d32effa PyImport_ImportModuleLevelObject (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x207ffa)
#24 0x00007f3d2d2cd248 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a6248)
#25 0x00007f3d2d198279 PyCFunction_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x71279)
#26 0x00007f3d2d2faa37 PyObject_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1d3a37)
#27 0x00007f3d2d389b77 PyEval_CallObjectWithKeywords (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x262b77)
#28 0x00007f3d2d2c57cb PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x19e7cb)
#29 0x00007f3d2d38b074 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264074)
#30 0x00007f3d2d38b153 PyEval_EvalCodeEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264153)
#31 0x00007f3d2d2c145b PyEval_EvalCode (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x19a45b)
#32 0x00007f3d2d2ce2cd (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a72cd)
#33 0x00007f3d2d198259 PyCFunction_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x71259)
#34 0x00007f3d2d2c8ff2 PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a1ff2)
#35 0x00007f3d2d38b074 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264074)
#36 0x00007f3d2d2c7adf PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a0adf)
#37 0x00007f3d2d2c96ad PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a26ad)
#38 0x00007f3d2d2c96ad PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a26ad)
#39 0x00007f3d2d2c96ad PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a26ad)
#40 0x00007f3d2d38b074 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264074)
#41 0x00007f3d2d38b153 PyEval_EvalCodeEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264153)
#42 0x00007f3d2d21e558 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0xf7558)
#43 0x00007f3d2d2faa37 PyObject_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1d3a37)
#44 0x00007f3d2d2fce1b _PyObject_CallMethodIdObjArgs (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1d5e1b)
#45 0x00007f3d2d32effa PyImport_ImportModuleLevelObject (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x207ffa)
#46 0x00007f3d2d2cd248 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1a6248)
#47 0x00007f3d2d198279 PyCFunction_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x71279)
#48 0x00007f3d2d2faa37 PyObject_Call (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1d3a37)
#49 0x00007f3d2d389b77 PyEval_CallObjectWithKeywords (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x262b77)
#50 0x00007f3d2d2c57cb PyEval_EvalFrameEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x19e7cb)
#51 0x00007f3d2d38b074 (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264074)
#52 0x00007f3d2d38b153 PyEval_EvalCodeEx (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x264153)
#53 0x00007f3d2d2c145b PyEval_EvalCode (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x19a45b)
#54 0x00007f3d2d2deb2f PyRun_StringFlags (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1b7b2f)
#55 0x00007f3d2d2dfb5b PyRun_SimpleStringFlags (/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0+0x1b8b5b)
#56 0x00007f3d2ff6a1cc lldb_private::ScriptInterpreterPythonImpl::InitializePrivate() (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0xd351cc)
#57 0x00007f3d2ff6cf7a lldb_private::ScriptInterpreterPythonImpl::ScriptInterpreterPythonImpl(lldb_private::Debugger&) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0xd37f7a)
#58 0x00007f3d2ff6d172 lldb_private::ScriptInterpreterPythonImpl::CreateInstance(lldb_private::Debugger&) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0xd38172)
#59 0x00007f3d2fa9a692 lldb_private::PluginManager::GetScriptInterpreterForLanguage(lldb::ScriptLanguage, lldb_private::Debugger&) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x865692)
#60 0x00007f3d2fa52c6a lldb_private::Debugger::GetScriptInterpreter(bool) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x81dc6a)
#61 0x00007f3d2fb478dc lldb_private::CommandObjectScript::DoExecute(llvm::StringRef, lldb_private::CommandReturnObject&) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x9128dc)
#62 0x00007f3d2fb43165 lldb_private::CommandObjectRaw::Execute(char const*, lldb_private::CommandReturnObject&) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x90e165)
#63 0x00007f3d2fb40445 lldb_private::CommandInterpreter::HandleCommand(char const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&, lldb_private::ExecutionContext*, bool, bool) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x90b445)
#64 0x00007f3d2fb41770 lldb_private::CommandInterpreter::IOHandlerInputComplete(lldb_private::IOHandler&, std::__cxx11::basic_string<char, std::char_traits, std::allocator >&) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x90c770)
#65 0x00007f3d2fa85851 lldb_private::IOHandlerEditline::Run() (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x850851)
#66 0x00007f3d2fa5277f lldb_private::Debugger::ExecuteIOHandlers() (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x81d77f)
#67 0x00007f3d2fb3452f lldb_private::CommandInterpreter::RunCommandInterpreter(bool, bool, lldb_private::CommandInterpreterRunOptions&) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x8ff52f)
#68 0x00007f3d2f79a496 lldb::SBDebugger::RunCommandInterpreter(bool, bool) (/home/rjodin/work/dpu_tools3/build/lib/liblldb.so.9+0x565496)
#69 0x0000564c6c55e757 Driver::MainLoop() (/home/rjodin/work/dpu_tools3/build/bin/lldb+0x6757)
#70 0x0000564c6c55d51b main (/home/rjodin/work/dpu_tools3/build/bin/lldb+0x551b)
#71 0x00007f3d2e6192e1 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e1)
#72 0x0000564c6c55d57a _start (/home/rjodin/work/dpu_tools3/build/bin/lldb+0x557a)
Stack dump:
0. Program arguments: lldb

  1. HandleCommand(command = “script”)
    Erreur de segmentation

Thanks

logo signature mail 50x50.png

+ lldb-dev

Yes, Python 3.5 is not supported. We "officially" support Python 2.7
and Python 3.7. I'm sorry if we forgot that in the release notes.

Yes, Python 3.5 is not supported. We "officially" support Python 2.7
and Python 3.7. I'm sorry if we forgot that in the release notes.

Is there a specific reason why 3.5 is not supported? Is it
because of this issue?

-Tom

> Yes, Python 3.5 is not supported. We "officially" support Python 2.7
> and Python 3.7. I'm sorry if we forgot that in the release notes.
>

Is there a specific reason why 3.5 is not supported? Is it
because of this issue?

Not really other than the lack of testing/CI.

- The Linux bots are all running with Python 2.7.
- I know that on macOS we ran into issues with some older versions. I
don't remember if it was this particular issue and I'm not even sure
if that was using Python 3.5 or Python 3.6. Our bots on GreenDragon
all run with Python 3.7.
- Stella's Windows bot is running Python 3.6 so we should consider
that supported as well.

>
> > Yes, Python 3.5 is not supported. We "officially" support Python 2.7
> > and Python 3.7. I'm sorry if we forgot that in the release notes.
> >
>
> Is there a specific reason why 3.5 is not supported? Is it
> because of this issue?

Not really other than the lack of testing/CI.

- The Linux bots are all running with Python 2.7.
- I know that on macOS we ran into issues with some older versions. I
don't remember if it was this particular issue and I'm not even sure
if that was using Python 3.5 or Python 3.6. Our bots on GreenDragon
all run with Python 3.7.
- Stella's Windows bot is running Python 3.6 so we should consider
that supported as well.

For completeness, Python 2.7 is not supported on Windows at all. The
docs specify Python 3.5 or later. Maybe we should bump that to 3.6
too?

+1 Yes, for Windows, I’d be happy if we said Python 3.6+.

Internally on Windows we use Python 3.5.1. I just ran our latest nightly, and was able to run the script interpreter in lldb without issues.

I want to upgrade to 3.7.x, but I need to get permission from our lawyers to ship it. Looking forward to that…

I investigated the bug yesterday, and filled some of my discoveries in

    https://bugs.llvm.org/show_bug.cgi?id=43830

TLDR: libpython uses libreadline and lldb uses libedit, and that's a mess.

Hey Christos,

could I bother you to take a look at this python PR <https://github.com/python/cpython/pull/16986&gt;, and the related lldb bug <https://bugs.llvm.org/show_bug.cgi?id=43830&gt;?

The executive summary is that there is an incompatibility between readline and its libedit emulation, which python needs to work around. Is there any way this can be fixed in libedit?

I guess the presence of the workaround will make the fix tricky, because then the workaround will be wrong for the "fixed" libedit, but it's still probably worth it to try to resolve this somehow.

WDYT?

pavel