llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
29.36k stars 12.15k forks source link

lldb 3.9 no longer opens Breakpad generated dumps #30812

Open llvmbot opened 7 years ago

llvmbot commented 7 years ago
Bugzilla Link 31464
Version unspecified
OS Linux
Attachments Zip file containing a core file generated from breakpad
Reporter LLVM Bugzilla Contributor
CC @labath

Extended Description

• Opens with all versions of gdb • Opens with lldb 3.7 • Fails to open with lldb 3.9

​0 0x00007ffff4e40120 in lldb_private::ArchSpec::GetMachine() const () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1 - rdi is 0x8 and can’t be dereferenced

​1 0x00007ffff53a71bf in RegisterContextPOSIX_x86::RegisterContextPOSIX_x86(lldb_private::Thread&, unsigned int, lldb_private::RegisterInfoInterface*) ()

from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​2 0x00007ffff52695f4 in RegisterContextCorePOSIX_x86_64::RegisterContextCorePOSIX_x86_64(lldb_private::Thread&, lldb_private::RegisterInfoInterface*, lldb_private::DataExtractor const&, lldb_private::DataExtractor const&) () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​3 0x00007ffff526775f in ThreadElfCore::CreateRegisterContextForFrame(lldb_private::StackFrame*) () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​4 0x00007ffff52672c5 in ThreadElfCore::GetRegisterContext() [clone .localalias.37] () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​5 0x00007ffff5010dd9 in lldb_private::Thread::SetupForResume() () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​6 0x00007ffff501653c in lldb_private::ThreadList::WillResume() () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​7 0x00007ffff4fd0f4f in lldb_private::Process::PrivateResume() () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​8 0x00007ffff4fd174f in lldb_private::Process::ProcessEventData::DoOnRemoval(lldb_private::Event*) () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​9 0x00007ffff4e86209 in lldb_private::Listener::FindNextEventInternal(lldb_private::Mutex::Locker&, lldb_private::Broadcaster, lldb_private::ConstString const, unsigned int, unsigned int, std::shared_ptr&, bool) () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​10 0x00007ffff4e86951 in lldb_private::Listener::WaitForEventsInternal(lldb_private::TimeValue const, lldb_private::Broadcaster, lldb_private::ConstString const*, unsigned int, unsigned int, std::shared_ptr&) () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​11 0x00007ffff4e86a44 in lldb_private::Listener::WaitForEvent(lldb_private::TimeValue const*, std::shared_ptr&) ()

from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​12 0x00007ffff4fd0d17 in lldb_private::Process::LoadCore() () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​13 0x00007ffff3f0ccdf in lldb::SBTarget::LoadCore(char const*) () from /home/rdorr/eugene/llvm-3.9-Release/lib/liblldb.so.3.9.1

​14 0x0000000000418864 in LldbHandler::LoadCore (this=0x7fffffffca88, target=0x7fffffffe7ad "/home/rdorr/Source/mspal/Hosts/Linux/output/bin/palrun",

core=0x69f6f0 "/home/rdorr/Temp/test.core", libPath=0x7fffffffe061 "") at debugger/LldbHandler.cpp:366

​15 0x00000000004687cd in LiveUserDebugServices::LoadCore (this=0x7fffffffca48, target=0x7fffffffe7ad "/home/rdorr/Source/mspal/Hosts/Linux/output/bin/palrun",

core=0x69f6f0 "/home/rdorr/Temp/test.core", libPath=0x7fffffffe061 "") at main/dbgsvc.cpp:143

​16 0x000000000046ce40 in main (argc=4, argv=0x7fffffffe518) at main/main.cpp:313

• Using readelf, I can see the PR_STATUS for the thread in question and has register and other information. • Opening in gdb I can symbolize the stacks and do other operations.

llvmbot commented 7 years ago

Changed the ES_OSAPI ident to ELFOSABI_LINUX using a hex editor and this dump now loads in lldb 3.9

labath commented 7 years ago

I don't believe anyone is looking at this problem at the moment.

By ToT I mean "svn trunk", the main development branch.

llvmbot commented 7 years ago

Thanks for your reply.

Do you know who is looking at the LLDB problem/fix?

Sorry, when you say ToT what are you referring to exactly?

labath commented 7 years ago

LLDB is failing to detect the core file as linux, therefore it does not create a register context and crashes. The linux-detection code has always been very messy and has undergone several changes in the past, so I guess one of them broke this.

BTW. lldb ToT should now be able to open minidump files natively, without converting them to core files. Have you tried using that?