[compiler-rt] [NFC][TSan] Remove redundant Context::report_mtx (PR #228605)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 3 09:54:32 PDT 2026
https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/228605
>From ba0e4512b258099a3f77f92dccbe51ff24319026 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Fri, 2 Oct 2026 15:32:05 -0700
Subject: [PATCH] [NFC][TSan] Remove redundant Context::report_mtx
Context::report_mtx was only ever acquired immediately alongside
ScopedErrorReportLock (in ScopedReport and BackgroundThread). Remove
report_mtx and MutexTypeReport and rely on ScopedErrorReportLock.
Assisted-by: Gemini
Pull Request: https://github.com/llvm/llvm-project/pull/228605
---
compiler-rt/lib/tsan/rtl/tsan_defs.h | 3 +--
compiler-rt/lib/tsan/rtl/tsan_rtl.cpp | 15 +++++----------
compiler-rt/lib/tsan/rtl/tsan_rtl.h | 1 -
compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp | 6 +-----
4 files changed, 7 insertions(+), 18 deletions(-)
diff --git a/compiler-rt/lib/tsan/rtl/tsan_defs.h b/compiler-rt/lib/tsan/rtl/tsan_defs.h
index 270d441dc90b7b..0396486f4464da 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_defs.h
+++ b/compiler-rt/lib/tsan/rtl/tsan_defs.h
@@ -199,8 +199,7 @@ enum ExternalTag : uptr {
};
enum {
- MutexTypeReport = MutexLastCommon,
- MutexTypeSyncVar,
+ MutexTypeSyncVar = MutexLastCommon,
MutexTypeAnnotations,
MutexTypeAtExit,
MutexTypeFired,
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
index e00f2ab5917357..c6e7dce5ecb181 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
@@ -390,7 +390,6 @@ void SlotUnlock(ThreadState* thr) {
Context::Context()
: initialized(),
- report_mtx(MutexTypeReport),
nreported(),
thread_registry([](Tid tid) -> ThreadContextBase* {
return new (Alloc(sizeof(ThreadContext))) ThreadContext(tid);
@@ -515,8 +514,7 @@ static void *BackgroundThread(void *arg) {
u64 last = atomic_load(&ctx->last_symbolize_time_ns,
memory_order_relaxed);
if (last != 0 && last + flags()->flush_symbolizer_ms * kMs2Ns < now) {
- Lock l(&ctx->report_mtx);
- ScopedErrorReportLock l2;
+ ScopedErrorReportLock l;
SymbolizeFlush();
atomic_store(&ctx->last_symbolize_time_ns, 0, memory_order_relaxed);
}
@@ -849,7 +847,7 @@ void ForkBefore(ThreadState* thr, uptr pc) SANITIZER_NO_THREAD_SAFETY_ANALYSIS {
ScopedErrorReportLock::Lock();
AllocatorLockBeforeFork();
// Suppress all reports in the pthread_atfork callbacks.
- // Reports will deadlock on the report_mtx.
+ // Reports may deadlock.
// We could ignore sync operations as well,
// but so far it's unclear if it will do more good or harm.
// Unnecessarily ignoring things can lead to false positives later.
@@ -1142,11 +1140,8 @@ namespace __sanitizer {
using namespace __tsan;
MutexMeta mutex_meta[] = {
{MutexInvalid, "Invalid", {}},
- {MutexThreadRegistry,
- "ThreadRegistry",
- {MutexTypeSlots, MutexTypeTrace, MutexTypeReport}},
- {MutexTypeReport, "Report", {MutexTypeTrace}},
- {MutexTypeSyncVar, "SyncVar", {MutexTypeReport, MutexTypeTrace}},
+ {MutexThreadRegistry, "ThreadRegistry", {MutexTypeSlots, MutexTypeTrace}},
+ {MutexTypeSyncVar, "SyncVar", {MutexTypeTrace}},
{MutexTypeAnnotations, "Annotations", {}},
{MutexTypeAtExit, "AtExit", {}},
{MutexTypeFired, "Fired", {MutexLeaf}},
@@ -1158,7 +1153,7 @@ MutexMeta mutex_meta[] = {
"Slot",
{MutexMulti, MutexTypeTrace, MutexTypeSyncVar, MutexThreadRegistry,
MutexTypeSlots}},
- {MutexTypeSlots, "Slots", {MutexTypeTrace, MutexTypeReport}},
+ {MutexTypeSlots, "Slots", {MutexTypeTrace}},
{},
};
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.h b/compiler-rt/lib/tsan/rtl/tsan_rtl.h
index db3c879e9e030b..fcfbf2f445dfa1 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl.h
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.h
@@ -317,7 +317,6 @@ struct Context {
MetaMap metamap;
- Mutex report_mtx;
atomic_uint32_t nreported;
atomic_uint64_t last_symbolize_time_ns;
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp b/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
index 3bf1d6a5a81e11..d248daed9202f4 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
@@ -168,13 +168,9 @@ ScopedReportBase::ScopedReportBase(ReportType typ, uptr tag) {
rep_ = New<ReportDesc>();
rep_->typ = typ;
rep_->tag = tag;
- ctx->report_mtx.Lock();
}
-ScopedReportBase::~ScopedReportBase() {
- ctx->report_mtx.Unlock();
- DestroyAndFree(rep_);
-}
+ScopedReportBase::~ScopedReportBase() { DestroyAndFree(rep_); }
void ScopedReportBase::AddStack(StackTrace stack, bool suppressable) {
ReportStack **rs = rep_->stacks.PushBack();
More information about the llvm-commits
mailing list