[Lldb-commits] [PATCH] D37651: Fix for bug 34532 - A few rough corners related to post-mortem debugging (core/minidump)

Jason Molenda via lldb-commits lldb-commits at lists.llvm.org
Mon Sep 11 16:22:04 PDT 2017


fwiw the reason the JIT came up is because we had an instance where the older MCJIT wasn't handling a relocation in thumb code about six weeks ago and we only caught the crash a couple days before we released a beta of it.  It definitely can happen with MCJIT.  I think with ORC JIT this is a not going to be a problem -- but it's a good example of a class of problem where the subsystem (jit) considers the failure catastrophic, whereas the user will find another way to do their work.  When it takes the developer an hour to get to the point of failure, they try to print a variable, lldb ingests a ton of debug info and then we crash because some little detail was not valid, or they try to run an expression and the debugger crashes with an unsupported relocation, I can't overstate what an enormous failure of the debugger that is.

> On Sep 11, 2017, at 4:10 PM, Greg Clayton via lldb-commits <lldb-commits at lists.llvm.org> wrote:
> 
> 
>> On Sep 11, 2017, at 4:05 PM, Leonard Mosescu <mosescu at google.com> wrote:
>> 
>> 
>> Process already has "Error Process::WillResume()" for this very reason. Just have the Windows mini dump core file plug-in override it. The code in Process::Resume already checks this:
>> Status Process::PrivateResume() {
>>   Status error(WillResume());
>>   // Tell the process it is about to resume before the thread list
>>   if (error.Success()) {
>>       ...
>>     }
>>   }
>>   return error;
>> }
>> Problem solved no???
>> 
>> It would be great, but that also happens too late (by the time PrivateResume() is called the state has been already changed)
> 
> We could call Process::WillResume() before Process::PrivateResume() before it changes the state... Probably still need to call it in PrivateResume() since a complex thread plan might start and stop the process many times and the process might crash and there would only be one main Process::Continue, or thread step that kicks off the initial run.
> 
> Greg
> 
> 
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits



More information about the lldb-commits mailing list