From: mpage Date: Fri, 26 Apr 2024 14:39:08 +0000 (-0700) Subject: gh-117657: Fix race data race in `_Py_IsOwnedByCurrentThread()` (#118258) X-Git-Tag: v3.13.0b1~255 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a5eeb832c2bbbd6ce1e9d545a553de926af468d5;p=thirdparty%2FPython%2Fcpython.git gh-117657: Fix race data race in `_Py_IsOwnedByCurrentThread()` (#118258) --- diff --git a/Include/object.h b/Include/object.h index 5aaf11c5194f..9132784628a5 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 e4ca32bebc5a..4b1a2fdf6dd4 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