[llvm-branch-commits] [NFC][TSan] Check no locks are held in EnterSymbolizer (PR #228815)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sat Oct 3 20:16:01 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Vitaly Buka (vitalybuka)

<details>
<summary>Changes</summary>

Verify CheckedMutex::CheckNoLocks() in EnterSymbolizer() to ensure no
internal TSan or ThreadRegistry locks are held when symbolizing. Also
remove the redundant ThreadRegistryLock debug check in ShouldReport(),
as ThreadRegistry uses CheckedMutex(MutexThreadRegistry) which is
already checked by CheckedMutex::CheckNoLocks().

Assisted-by: Gemini


---
Full diff: https://github.com/llvm/llvm-project/pull/228815.diff


2 Files Affected:

- (modified) compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp (-3) 
- (modified) compiler-rt/lib/tsan/rtl/tsan_symbolize.cpp (+1) 


``````````diff
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp b/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
index 1d76a886dc536..ebdc7695c43da 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
@@ -140,9 +140,6 @@ bool ShouldReport(ThreadState *thr, ReportType typ) {
   // Taking any locking in the fork context can lead to deadlocks.
   // If any locks are already taken, it's too late to do this check.
   CheckedMutex::CheckNoLocks();
-  // For the same reason check we didn't lock thread_registry yet.
-  if (SANITIZER_DEBUG)
-    ThreadRegistryLock l(&ctx->thread_registry);
   if (!flags()->report_bugs || thr->suppress_reports)
     return false;
   switch (typ) {
diff --git a/compiler-rt/lib/tsan/rtl/tsan_symbolize.cpp b/compiler-rt/lib/tsan/rtl/tsan_symbolize.cpp
index b382b63247e8e..51028e9ce5941 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_symbolize.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_symbolize.cpp
@@ -22,6 +22,7 @@
 namespace __tsan {
 
 void EnterSymbolizer() {
+  CheckedMutex::CheckNoLocks();
   ThreadState *thr = cur_thread();
   CHECK(!thr->in_symbolizer);
   thr->in_symbolizer = true;

``````````

</details>


https://github.com/llvm/llvm-project/pull/228815


More information about the llvm-branch-commits mailing list