aganea added a comment.

In D70568#1760185 <https://reviews.llvm.org/D70568#1760185>, @hans wrote:

> Do I understand correctly that the main point is to get a stack trace when 
> CrashRecoveryContext::RunSafely() fails, instead of just returning an error?


Correct. Otherwise, when running with D69825 <https://reviews.llvm.org/D69825>, 
the callstack was not displayed anymore when a crash occurred in clang-cl. This 
side-effect is that it also calls the cleanup, thus the change in 
`clang/test/Modules/signal.m` (the temp files are properly deleted in the case 
of a crash).

>> It enables CrashRecoveryContext exceptions by default (instead of disabled 
>> before) - however the exception handlers are lazily installed on the first 
>> creation of a CrashRecoveryContext.
> 
> Why does it now need to be enabled by default?

I used to call `CrashRecoveryContext::Enable()` in `CC1Command`, just before 
calling the CC1 callback. And to be consistent, call 
`CrashRecoveryContext::Disable()` after the CC1 callback.
But then, if we're running several compilations in parallel, it gets 
complicated, we can't just toggle it on/off all the time - it would need a 
refcount as the comment in `CrashRecoveryContext::Enable()` says.
I thought it'd be easier to just have it always enabled, as the signal handlers 
won't be installed before usage? Do you prefer that, or the refcounting?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70568/new/

https://reviews.llvm.org/D70568



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to