[compiler-rt] r304297 - [sanitizer] Trying to fix MAC buildbots after r304285

Maxim Ostapenko via llvm-commits llvm-commits at lists.llvm.org
Wed May 31 04:40:57 PDT 2017


Author: chefmax
Date: Wed May 31 06:40:57 2017
New Revision: 304297

URL: http://llvm.org/viewvc/llvm-project?rev=304297&view=rev
Log:
[sanitizer] Trying to fix MAC buildbots after r304285

It seems that on MAC allocator already locks on fork thus adding another ForceLock
in fork interceptor will cause a deadlock.

Modified:
    compiler-rt/trunk/lib/asan/asan_interceptors.cc
    compiler-rt/trunk/lib/lsan/lsan_interceptors.cc

Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=304297&r1=304296&r2=304297&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Wed May 31 06:40:57 2017
@@ -707,13 +707,17 @@ INTERCEPTOR(int, __cxa_atexit, void (*fu
 
 #if ASAN_INTERCEPT_FORK
 static void BeforeFork() {
-  get_allocator().ForceLock();
-  StackDepotLockAll();
+  if (SANITIZER_LINUX) {
+    get_allocator().ForceLock();
+    StackDepotLockAll();
+  }
 }
 
 static void AfterFork() {
-  StackDepotUnlockAll();
-  get_allocator().ForceUnlock();
+  if (SANITIZER_LINUX) {
+    StackDepotUnlockAll();
+    get_allocator().ForceUnlock();
+  }
 }
 
 INTERCEPTOR(int, fork, void) {

Modified: compiler-rt/trunk/lib/lsan/lsan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_interceptors.cc?rev=304297&r1=304296&r2=304297&view=diff
==============================================================================
--- compiler-rt/trunk/lib/lsan/lsan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/lsan/lsan_interceptors.cc Wed May 31 06:40:57 2017
@@ -99,13 +99,17 @@ INTERCEPTOR(void*, valloc, uptr size) {
 #endif
 
 static void BeforeFork() {
-  LockAllocator();
-  StackDepotLockAll();
+  if (SANITIZER_LINUX) {
+    LockAllocator();
+    StackDepotLockAll();
+  }
 }
 
 static void AfterFork() {
-  StackDepotUnlockAll();
-  UnlockAllocator();
+  if (SANITIZER_LINUX) {
+    StackDepotUnlockAll();
+    UnlockAllocator();
+  }
 }
 
 INTERCEPTOR(int, fork, void) {




More information about the llvm-commits mailing list