This is a known issue.  It actually isn't a bug in lldb, but rather a bug in 
the C++ demangler library on the system.  The problem and some potential 
solutions are discussed in this post in the Apple Developer forums:

https://devforums.apple.com/message/904311#904311

The simplest solution is to get your hands on a copy of the libcxxabi.dylib 
that ships with Mavericks (which does not have this problem) or build your own 
copy of the LLVM TOT libcxxabi dylib - instructions to do that are also 
included in the devforms thread.

Jim

On Nov 8, 2013, at 3:15 AM, Tom Miles <[email protected]> wrote:

> 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 [email protected] 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.   
> _______________________________________________
> lldb-dev mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev


_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to