[llvm-branch-commits] [NFC][TSan] Check IsFiredSuppression before ScopedReport in ReportErrnoSpoiling (PR #228811)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sat Oct 3 20:15:34 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>

Check IsFiredSuppression(ctx, ReportTypeErrnoInSignal, stack) and return
early before constructing ScopedReport in ReportErrnoSpoiling (matching
SignalUnsafeCall and ReportRace). This avoids acquiring
ScopedErrorReportLock and ThreadRegistryLock for already-suppressed
reports.

Assisted-by: Gemini


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


1 Files Affected:

- (modified) compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp (+4-6) 


``````````diff
diff --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp b/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
index 233985c419be1..4c0c39bb6cc82 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
@@ -2176,19 +2176,17 @@ static void ReportErrnoSpoiling(ThreadState *thr, uptr pc, int sig) {
   // StackTrace::GetNestInstructionPc(pc) is used because return address is
   // expected, OutputReport() will undo this.
   ObtainCurrentStack(thr, StackTrace::GetNextInstructionPc(pc), &stack);
+  if (IsFiredSuppression(ctx, ReportTypeErrnoInSignal, stack))
+    return;
   ScopedReport rep(ReportTypeErrnoInSignal);
-  bool suppressed;
   // Release locks before symbolizing and outputting the report to avoid
   // deadlocks.
   {
     ThreadRegistryLock l(&ctx->thread_registry);
     rep.SetSigNum(sig);
-    suppressed = IsFiredSuppression(ctx, ReportTypeErrnoInSignal, stack);
-    if (!suppressed)
-      rep.AddStack(stack, true);
+    rep.AddStack(stack, true);
   }
-  if (!suppressed)
-    OutputReport(thr, rep);
+  OutputReport(thr, rep);
 }
 
 static void CallUserSignalHandler(ThreadState *thr, bool sync, bool acquire,

``````````

</details>


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


More information about the llvm-branch-commits mailing list