[compiler-rt] fe90b9d - [ASan] Limits the conditions of the deadlock patch (#137127)

via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 24 09:51:41 PDT 2025


Author: Camsyn
Date: 2025-04-24T09:51:38-07:00
New Revision: fe90b9dac76dd3efcb24f747007c68ee2bc27630

URL: https://github.com/llvm/llvm-project/commit/fe90b9dac76dd3efcb24f747007c68ee2bc27630
DIFF: https://github.com/llvm/llvm-project/commit/fe90b9dac76dd3efcb24f747007c68ee2bc27630.diff

LOG: [ASan] Limits the conditions of the deadlock patch (#137127)

PR #131756 introduced a patch to fix a deadlock between LSan and ASan.

The relevant deadlock only occurs when LSan is enabled and
`dl_iterate_phdr` is used for Stop-the-World, i.e., under the condition
`CAN_SANITIZE_LEAKS && (SANITIZER_LINUX || SANITIZER_NETBSD)`.

Therefore, this commit also sets the effective condition of this patch
to the above condition, avoiding unnecessary problems in other
environments, e.g., stack overflow on MSVC/Windows.

Added: 
    

Modified: 
    compiler-rt/lib/asan/asan_report.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/asan/asan_report.cpp b/compiler-rt/lib/asan/asan_report.cpp
index 8b22aebe7cafc..e049a21e4e16d 100644
--- a/compiler-rt/lib/asan/asan_report.cpp
+++ b/compiler-rt/lib/asan/asan_report.cpp
@@ -21,6 +21,7 @@
 #include "asan_scariness_score.h"
 #include "asan_stack.h"
 #include "asan_thread.h"
+#include "lsan/lsan_common.h"
 #include "sanitizer_common/sanitizer_common.h"
 #include "sanitizer_common/sanitizer_flags.h"
 #include "sanitizer_common/sanitizer_interface_internal.h"
@@ -149,7 +150,7 @@ class ScopedInErrorReport {
     // 2. Subsequent error reporting avoids nested lock acquisition patterns.
     // 3. Eliminates the lock order inversion risk between libdl and ASan's
     //    thread registry.
-#if !SANITIZER_SYMBOLIZER_MARKUP
+#if CAN_SANITIZE_LEAKS && (SANITIZER_LINUX || SANITIZER_NETBSD)
     Symbolizer::GetOrInit()->GetRefreshedListOfModules();
 #endif
 


        


More information about the llvm-commits mailing list