[lldb-dev] lldb crash on osx

Tom Miles tom.miles at creative-assembly.com
Fri Nov 8 03:15:43 PST 2013


Hi There,

Firstly I apologise if this the incorrect forum for something like this, but it's a kind of "you're my only hope" type situation.  I am currently in the process of porting a 2.5 million line pc code base to OSX and after a year of compiler wrangling and team coding standards changes I'm pretty much there.  However, we have had to keep upgrading XCode due to the support of C++11 being slow in coming.  However, now with XCode 5 we have all the features we need, there is one small problem though, XCode crashes when trying to debug our code.  I eventually traced this to the fact that the lldb that ships with XCode5 crashes when trying to attach to the exe.  I found this out by running lldb against our exe from the command line.  I then tried downloading the latest lldb from svn and building it, which yielded a version that would attach to the exe and run it, but would crash in a very similar way when trying to perform any debugging operations, such as a backtrace.  As a last ditch effort I tried debugging lldb debugging our exe (fun times), and got the following output and call stack.

If anyone could shed some light on it, then it would be great.  I'm afraid that I am unable to provide reproduction methods, due to the size and proprietary nature of the code base, I am happy to provide any additional information that may be required though.

(lldb) bt
lldb(7515,0x7fff7b4b2180) malloc: *** error for object 0x104186080: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
Process 7515 stopped
* thread #1: tid = 0x3b1be, 0x00007fff8f873212 libsystem_kernel.dylib`__pthread_kill + 10, name = '<lldb.driver.main-thread>', queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007fff8f873212 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill + 10:
-> 0x7fff8f873212:  jae    0x7fff8f873219            ; __pthread_kill + 17
   0x7fff8f873214:  jmpq   0x7fff8f8744d4            ; cerror_nocancel
   0x7fff8f873219:  ret
   0x7fff8f87321a:  nop
(lldb) bt
* thread #1: tid = 0x3b1be, 0x00007fff8f873212 libsystem_kernel.dylib`__pthread_kill + 10, name = '<lldb.driver.main-thread>', queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00007fff8f873212 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007fff914d9b24 libsystem_c.dylib`pthread_kill + 90
    frame #2: 0x00007fff9151df61 libsystem_c.dylib`abort + 143
    frame #3: 0x00007fff914f98d5 libsystem_c.dylib`szone_error + 580
    frame #4: 0x00007fff914f7628 libsystem_c.dylib`szone_free_definite_size + 1535
    frame #5: 0x00007fff914f18c8 libsystem_c.dylib`free + 199
    frame #6: 0x000000010160ec52 LLDB`lldb_private::Mangled::GetDemangledName(this=0x000000013833e2f8) const + 322 at Mangled.cpp:214
    frame #7: 0x0000000101a38ece LLDB`lldb_private::Symtab::InitNameIndexes(this=0x000000010450a990) + 894 at Symtab.cpp:317
    frame #8: 0x0000000101a3da78 LLDB`lldb_private::Symtab::FindAllSymbolsWithNameAndType(this=0x000000010450a990, name=0x00007fff5fbf1c78, symbol_type=eSymbolTypeObjCClass, symbol_indexes=0x00007fff5fbf1330) + 120 at Symtab.cpp:791
    frame #9: 0x000000010161a9ab LLDB`lldb_private::Module::FindSymbolsWithNameAndType(this=0x0000000104500b70, name=0x00007fff5fbf1c78, symbol_type=eSymbolTypeObjCClass, sc_list=0x00007fff5fbf17b0) + 443 at Module.cpp:1316
    frame #10: 0x00000001016240f5 LLDB`lldb_private::ModuleList::FindSymbolsWithNameAndType(this=0x0000000105800188, name=0x00007fff5fbf1c78, symbol_type=eSymbolTypeObjCClass, sc_list=0x00007fff5fbf17b0, append=false) const + 597 at ModuleList.cpp:528
    frame #11: 0x0000000101a96a90 LLDB`lldb_private::ObjCLanguageRuntime::LookupInCompleteClassCache(this=0x000000013227feb0, name=0x00007fff5fbf1c78) + 1456 at ObjCLanguageRuntime.cpp:101
    frame #12: 0x0000000101692b83 LLDB`lldb_private::ValueObject::MaybeCalculateCompleteType(this=0x0000000132a334b0) + 755 at ValueObject.cpp:328
    frame #13: 0x0000000101692eb0 LLDB`lldb_private::ValueObject::GetClangType(this=0x0000000132a334b0) + 32 at ValueObject.cpp:359
    frame #14: 0x0000000101dffae2 LLDB`lldb_private::FormatNavigator<lldb_private::ConstString, lldb_private::TypeFormatImpl>::Get(this=0x000000012f663200, valobj=0x0000000132a334b0, entry=0x00007fff5fbf20c0, use_dynamic=eNoDynamicValues, why=0x00007fff5fbf2114) + 98 at FormatNavigator.h:291
    frame #15: 0x0000000101dfc583 LLDB`lldb_private::TypeCategoryImpl::Get(this=0x000000012f663110, valobj=0x0000000132a334b0, entry=0x00007fff5fbf20c0, use_dynamic=eNoDynamicValues, reason=0x00007fff5fbf2114) + 115 at TypeCategory.cpp:48
    frame #16: 0x0000000101e1f27f LLDB`lldb_private::TypeCategoryMap::GetFormat(this=0x000000010277e230, valobj=0x0000000132a334b0, use_dynamic=eNoDynamicValues) + 863 at TypeCategoryMap.cpp:196
    frame #17: 0x0000000101de6921 LLDB`lldb_private::FormatManager::GetFormat(this=0x000000010277e148, valobj=0x0000000132a334b0, use_dynamic=eNoDynamicValues) + 753 at FormatManager.cpp:447
    frame #18: 0x0000000101ddee72 LLDB`lldb_private::DataVisualization::GetFormat(valobj=0x0000000132a334b0, use_dynamic=eNoDynamicValues) + 50 at DataVisualization.cpp:52
    frame #19: 0x0000000101691bb1 LLDB`lldb_private::ValueObject::UpdateFormatsIfNeeded(this=0x0000000132a334b0) + 193 at ValueObject.cpp:248
    frame #20: 0x000000010169164b LLDB`lldb_private::ValueObject::UpdateValueIfNeeded(this=0x0000000132a334b0, update_format=true) + 75 at ValueObject.cpp:168
    frame #21: 0x000000010169aefa LLDB`lldb_private::ValueObject::GetValueAsCString(this=0x0000000132a334b0) + 42 at ValueObject.cpp:1470
    frame #22: 0x00000001015cfd2e LLDB`FormatPromptRecurse(format=0x0000000132a31f8c, sc=0x0000000132a31cb0, exe_ctx=0x00007fff5fbf7b78, addr=0x0000000000000000, s=0x00007fff5fbf5670, end=0x00007fff5fbf56b0, valobj=0x0000000000000000) + 21006 at Debugger.cpp:2285
    frame #23: 0x00000001015caceb LLDB`FormatPromptRecurse(format=0x0000000132a31f73, sc=0x0000000132a31cb0, exe_ctx=0x00007fff5fbf7b78, addr=0x0000000000000000, s=0x00007fff5fbf7090, end=0x00007fff5fbf70d0, valobj=0x0000000000000000) + 459 at Debugger.cpp:1526
    frame #24: 0x00000001015caceb LLDB`FormatPromptRecurse(format=0x0000000132a31f50, sc=0x0000000132a31cb0, exe_ctx=0x00007fff5fbf7b78, addr=0x0000000000000000, s=0x00007fff5fbf7b28, end=0x0000000000000000, valobj=0x0000000000000000) + 459 at Debugger.cpp:1526
    frame #25: 0x00000001015caac1 LLDB`lldb_private::Debugger::FormatPrompt(format=0x0000000132a31f50, sc=0x0000000132a31cb0, exe_ctx=0x00007fff5fbf7b78, addr=0x0000000000000000, s=0x00007fff5fbf7b28, valobj=0x0000000000000000) + 641 at Debugger.cpp:2622
    frame #26: 0x0000000101afb7ef LLDB`lldb_private::StackFrame::DumpUsingSettingsFormat(this=0x0000000132a31c40, strm=0x00000001034b94e0, frame_marker=0x00007fff5fbf7e71) + 495 at StackFrame.cpp:1294
    frame #27: 0x0000000101afca1c LLDB`lldb_private::StackFrame::GetStatus(this=0x0000000132a31c40, strm=0x00000001034b94e0, show_frame_info=true, show_source=false, frame_marker=0x00007fff5fbf7e71) + 108 at StackFrame.cpp:1384
    frame #28: 0x0000000101b05641 LLDB`lldb_private::StackFrameList::GetStatus(this=0x000000012f658eb0, strm=0x00000001034b94e0, first_frame=0, num_frames=4294967295, show_frame_info=true, num_frames_with_source=0, selected_frame_marker=0x00000001020d5fd4) + 2929 at StackFrameList.cpp:909
    frame #29: 0x0000000101b534be LLDB`lldb_private::Thread::GetStatus(this=0x000000010422b620, strm=0x00000001034b94e0, start_frame=0, num_frames=4294967295, num_frames_with_source=0) + 1582 at Thread.cpp:1970
    frame #30: 0x000000010157c9de LLDB`CommandObjectThreadBacktrace::DoExecute(this=0x0000000103425690, command=0x00007fff5fbf89a0, result=0x00000001034b94e0) + 190 at CommandObjectThread.cpp:175
    frame #31: 0x00000001017f26fb LLDB`lldb_private::CommandObjectParsed::Execute(this=0x0000000103425690, args_string=0x00007fff5fbf9309, result=0x00000001034b94e0) + 715 at CommandObject.cpp:1037
    frame #32: 0x00000001017cbbc4 LLDB`lldb_private::CommandInterpreter::HandleCommand(this=0x00000001034112b0, command_line=0x00007fff5fbfafb1, lazy_add_to_history=eLazyBoolCalculate, result=0x00000001034b94e0, override_context=0x0000000000000000, repeat_on_empty_command=true, no_context_switching=true) + 21492 at CommandInterpreter.cpp:1850
    frame #33: 0x00000001017f99d8 LLDB`lldb_private::CommandObjectRegexCommand::DoExecute(this=0x00000001034394f0, command=0x00007fff5fbfbe89, result=0x00000001034b94e0) + 2984 at CommandObjectRegexCommand.cpp:89
    frame #34: 0x00000001017f2a95 LLDB`lldb_private::CommandObjectRaw::Execute(this=0x00000001034394f0, args_string=0x00007fff5fbfbe89, result=0x00000001034b94e0) + 789 at CommandObject.cpp:1063
    frame #35: 0x00000001017cbbc4 LLDB`lldb_private::CommandInterpreter::HandleCommand(this=0x00000001034112b0, command_line=0x000000010425a7b9, lazy_add_to_history=eLazyBoolYes, result=0x00000001034b94e0, override_context=0x0000000000000000, repeat_on_empty_command=true, no_context_switching=false) + 21492 at CommandInterpreter.cpp:1850
    frame #36: 0x00000001000d1754 LLDB`lldb::SBCommandInterpreter::HandleCommand(this=0x00007fff5fbfdb20, command_line=0x000000010425a7b9, result=0x00007fff5fbfdb28, add_to_history=true) + 292 at SBCommandInterpreter.cpp:122
    frame #37: 0x0000000100008e47 lldb`Driver::HandleIOEvent(this=0x00007fff5fbff9a0, event=0x00007fff5fbfe060) + 183 at Driver.cpp:1171
    frame #38: 0x000000010000be68 lldb`Driver::MainLoop(this=0x00007fff5fbff9a0) + 10184 at Driver.cpp:1629
    frame #39: 0x000000010000c923 lldb`main(argc=1, argv=0x00007fff5fbffb18, envp=0x00007fff5fbffb28) + 467 at Driver.cpp:1802
    frame #40: 0x0000000100001044 lldb`start + 52
This email is sent by The Creative Assembly Limited company No. 03425917, registered in England & Wales registered office 27 Great West Road, Middlesex, TW8 9BW, England. The contents of this e-mail and any attachments are confidential to the intended recipient and may also be legally privileged. Unless you are the named addressee (or authorised to receive for the addressee) of this email you may not copy, disclose or distribute it to anyone else. If you have received this email in error, please notify us immediately by e-mail on postmaster at creative-assembly.co.uk and then delete the email and any copies. The Creative Assembly Limited have made all reasonable efforts to ensure that this e-mail and any attached documents or software are free from software viruses, but it is the recipient's responsibility to confirm this.  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20131108/f73666cc/attachment.html>


More information about the lldb-dev mailing list