summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/object.h4
-rw-r--r--Tools/tsan/suppressions_free_threading.txt1
2 files changed, 4 insertions, 1 deletions
diff --git a/Include/object.h b/Include/object.h
index 5aaf11c..9132784 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -303,7 +303,11 @@ _Py_ThreadId(void)
static inline Py_ALWAYS_INLINE int
_Py_IsOwnedByCurrentThread(PyObject *ob)
{
+#ifdef _Py_THREAD_SANITIZER
+ return _Py_atomic_load_uintptr_relaxed(&ob->ob_tid) == _Py_ThreadId();
+#else
return ob->ob_tid == _Py_ThreadId();
+#endif
}
#endif
diff --git a/Tools/tsan/suppressions_free_threading.txt b/Tools/tsan/suppressions_free_threading.txt
index e4ca32b..4b1a2fd 100644
--- a/Tools/tsan/suppressions_free_threading.txt
+++ b/Tools/tsan/suppressions_free_threading.txt
@@ -14,7 +14,6 @@ race:set_allocator_unlocked
race:_add_to_weak_set
race:_in_weak_set
race:_mi_heap_delayed_free_partial
-race:_Py_IsOwnedByCurrentThread
race:_PyEval_EvalFrameDefault
race:_PyFunction_SetVersion
race:_PyImport_AcquireLock