On 27/11/2013 09:02, Argyrios Kyrtzidis wrote:
@@ -6498,6 +6515,11 @@ bool RunSafely(llvm::CrashRecoveryContex
                 unsigned Size) {
    if (!Size)
      Size = GetSafetyThreadStackSize();
+  if (getenv("LIBCLANG_DISABLE_CRASH_RECOVERY")) {
+    // Don't use crash recovery.
+    llvm::llvm_execute_on_thread(Fn, UserData, Size);
+    return true;
+  }

Hi Argyrios,

I don't think this change does what you want. It'll force threaded execution even when not requested.

How about just:

|--- a/tools/libclang/CIndex.cpp||
||+++ b/tools/libclang/CIndex.cpp||
||@@ -2544,7 +2544,8 @@ CXIndex clang_createIndex(int excludeDeclarationsFromPCH,||
||                           int displayDiagnostics) {||
|| // We use crash recovery to make some of our APIs more reliable, implicitly||
||   // enable it.||
||-  llvm::CrashRecoveryContext::Enable();||
||+  if (!getenv("LIBCLANG_DISABLE_CRASH_RECOVERY"))||
||+    llvm::CrashRecoveryContext::Enable();||
||||
||   // Enable support for multithreading in LLVM.||
||   {||
|
Given that RunSafely() is documented to "execute the given code safely" I think this would also be more self-documenting.


That's much better; in r195829, thanks!

Great!

I'd like to see CIndex provide an API changing this to opt-in during the 3.5 iteration the same way we did recently for PrettyStackTrace.

Adding signal global handlers is generally undesirable when embedding into larger applications and the users I know of are just patching to turn this off anyway.

Alp.


--
http://www.nuanti.com
the browser experts

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

Reply via email to