aboutsummaryrefslogtreecommitdiff
path: root/tsan.supp
diff options
context:
space:
mode:
Diffstat (limited to 'tsan.supp')
-rw-r--r--tsan.supp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tsan.supp b/tsan.supp
index da8963854..93398da67 100644
--- a/tsan.supp
+++ b/tsan.supp
@@ -20,3 +20,15 @@
# TSAN reports as a race. This is benign: the slot is always NULL and writing NULL
# to it has no observable effect.
race:eastl::hashtable*DoFreeNodes*
+
+# UE::Trace's GetUid() uses a racy static uint32 cache (Uid = Uid ? Uid : Initialize())
+# as a fast path to avoid re-entering Initialize(). The actual initialization is done via
+# a thread-safe static (Uid_ThreadSafeInit) inside Initialize(), so the worst case is
+# redundant calls to Initialize() which always returns the same value.
+race:*Fields::GetUid*
+
+# TRACE_CPU_SCOPE generates a function-local `static int32 scope_id` that is lazily
+# initialized without synchronization (if (0 == scope_id) scope_id = ScopeNew(...)).
+# Same benign pattern as GetUid: the worst case is redundant calls to ScopeNew() which
+# always returns the same value for a given scope name.
+race:*$trace_scope_id*