[Bug 16301] New: LLDB dies with SIGABRT in TestRegisters.py on Linux

Bug ID 16301
Summary LLDB dies with SIGABRT in TestRegisters.py on Linux
Product lldb
Version unspecified
Hardware PC
OS All
Status NEW
Severity normal
Priority P
Component All Bugs
Assignee lldb-dev@cs.uiuc.edu
Reporter daniel.malea@intel.com
Classification Unclassified

This failure manifests itself on the Jenkins buildbot as well as the clang
buildbot, and seems to be related to the inferior changing while LLDB is
tearing down the ProcessPOSIX.

After running repeatedly under a debugger, I was able to generate the following
stacktraces at the point of the SIGABRT:

#0  0x00007ffff6f1a425 in __GI_raise (sig=<optimized out>) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff6f1db8b in __GI_abort () at abort.c:91
#2  0x00007ffff258cb99 in std::__throw_bad_weak_ptr () at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:77
#3  0x00007ffff258cb3c in
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_lock
(this=0x113e6d0)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:243
#4  0x00007ffff258cafb in std::__shared_count<2>::__shared_count
(this=0x7fffce7fbae0, __r=...)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:731
#5  0x00007ffff258caad in std::__shared_count<2>::__shared_count
(this=0x7fffce7fbae0, __r=...)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:734
#6  0x00007ffff25917d4 in std::__shared_ptr<lldb_private::Process,
(__gnu_cxx::_Lock_policy)2>::__shared_ptr<lldb_private::Process>
(this=0x7fffce7fbad8, __r=...)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:840
#7  0x00007ffff2591798 in
std::shared_ptr<lldb_private::Process>::shared_ptr<lldb_private::Process>
(this=0x7fffce7fbad8, __r=...)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr.h:249
#8  0x00007ffff259175d in
std::shared_ptr<lldb_private::Process>::shared_ptr<lldb_private::Process>
(this=0x7fffce7fbad8, __r=...)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr.h:249
#9  0x00007ffff2590e0c in
std::enable_shared_from_this<lldb_private::Process>::shared_from_this
(this=0x44e6548)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr.h:558
#10 0x00007ffff28ca041 in lldb_private::Process::SetPrivateState
(this=0x44e6530, new_state=lldb::eStateStopped) at
../tools/lldb/source/Target/Process.cpp:1749
#11 0x00007ffff2a7ef1c in ProcessPOSIX::SendMessage (this=0x44e6530,
message=...) at ../tools/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp:414
#12 0x00007ffff2a73862 in ProcessMonitor::MonitorCallback
(callback_baton=0x21ad860, pid=13739, exited=false, signal=5, status=0)
    at ../tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp:1461
#13 0x00007ffff266dba8 in MonitorChildProcessThreadFunction (arg=0x21ad8c0) at
../tools/lldb/source/Host/common/Host.cpp:233
#14 0x00007ffff266e76b in ThreadCreateTrampoline (arg=0x11e7550) at
../tools/lldb/source/Host/common/Host.cpp:576
#15 0x00007ffff7bc4e9a in start_thread (arg=0x7fffce7fc700) at
pthread_create.c:308
#16 0x00007ffff6fd7cbd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#17 0x0000000000000000 in ?? ()

And from another thread in the same process:

#0  0x00007ffff7bc6148 in pthread_join (threadid=140736657868544,
thread_return=0x7fffffffbdd0) at pthread_join.c:89
#1  0x00007ffff266e841 in lldb_private::Host::ThreadJoin
(thread=140736657868544, thread_result_ptr=0x7fffffffbdd0, error=0x0) at
../tools/lldb/source/Host/common/Host.cpp:628
#2  0x00007ffff2a76737 in ProcessMonitor::StopMonitoringChildProcess
(this=0x21ad860) at
../tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp:2137
#3  0x00007ffff2a73b79 in ProcessMonitor::StopMonitor (this=0x21ad860) at
../tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp:2145
#4  0x00007ffff2a73b49 in ProcessMonitor::~ProcessMonitor (this=0x21ad860) at
../tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp:1052
#5  0x00007ffff2a7da72 in ProcessPOSIX::~ProcessPOSIX (this=0x44e6530) at
../tools/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp:91
#6  0x00007ffff2a7168f in ProcessLinux::~ProcessLinux (this=0x44e6530) at
../tools/lldb/source/Plugins/Process/Linux/ProcessLinux.h:26
#7  0x00007ffff2a710d5 in ProcessLinux::~ProcessLinux (this=0x44e6530) at
../tools/lldb/source/Plugins/Process/Linux/ProcessLinux.h:26
#8  0x00007ffff2a710f9 in ProcessLinux::~ProcessLinux (this=0x44e6530) at
../tools/lldb/source/Plugins/Process/Linux/ProcessLinux.h:26
#9  0x00007ffff2a71582 in std::_Sp_counted_ptr<ProcessLinux*,
(__gnu_cxx::_Lock_policy)2>::_M_dispose (this=0x113e6d0)
    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:293
#10 0x00007ffff24d279a in
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x113e6d0)
        at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:147
#11 0x00007ffff258c79d in std::__shared_count<2>::~__shared_count
(this=0x7fffffffbfb0) at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:558
#12 0x00007ffff258c765 in std::__shared_count<2>::~__shared_count
(this=0x7fffffffbfb0) at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:556
#13 0x00007ffff2591a7c in std::__shared_ptr<lldb_private::Process,
2>::~__shared_ptr (this=0x7fffffffbfa8)
            at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:813
#14 0x00007ffff25fdc35 in std::__shared_ptr<lldb_private::Process,
2>::~__shared_ptr (this=0x7fffffffbfa8)
                at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:813
#15 0x00007ffff28ae596 in std::__shared_ptr<lldb_private::Process,
(__gnu_cxx::_Lock_policy)2>::reset (this=0xa1fa110)
                    at
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr_base.h:922
#16 0x00007ffff28fd47b in lldb_private::Target::DeleteCurrentProcess
(this=0xa1f9e20) at ../tools/lldb/source/Target/Target.cpp:169
#17 0x00007ffff28fdac0 in lldb_private::Target::Destroy (this=0xa1f9e20) at
../tools/lldb/source/Target/Target.cpp:192
#18 0x00007ffff25a1f00 in lldb::SBDebugger::DeleteTarget (this=0x10d9e20,
target=...) at ../tools/lldb/source/API/SBDebugger.cpp:672
#19 0x00007ffff24fc383 in _wrap_SBDebugger_DeleteTarget (args=
                        (<SBDebugger(this=<SwigPyObject at remote 0xeef150>) at
remote 0xfb1a10>, <SBTarget(this=<SwigPyObject at remote 0x1112e40>) at remote
0x9d2e910>))
    at tools/lldb/scripts/LLDBWrapPython.cpp:14990
#20 0x0000000000463ea7 in ext_do_call (nk=17834568, na=<optimized out>,
flags=<optimized out>, pp_stack=0x7fffffffc2c0, func=<built-in function
SBDebugger_DeleteTarget>)
        at ../Python/ceval.c:4331

To reproduce, remove the @skipIfLinux decorator from the test cases in
TestRegisters.py ran run the test case repeatedly. For example, to run the test
case in question 100 times, do:

python dotest.py --executable <path-to-lldb> -p TestRegisters.py -#100

Daniel Malea changed bug 16301

What Removed Added
Status NEW RESOLVED
Resolution FIXED

Comment # 1 on bug 16301 from Daniel Malea

Test re-enabled and this failure does not seem to reproduce anymore (either
locally or on the buildbots) so closing this bug.