https://github.com/python/cpython/commit/0de5e0c5442abddbe17481ef450e4abc992058f5
commit: 0de5e0c5442abddbe17481ef450e4abc992058f5
branch: main
author: Sam Gross <[email protected]>
committer: colesbury <[email protected]>
date: 2025-03-21T14:22:37-04:00
summary:
gh-117657: Fix TSAN data race in _PyEval_SetTrace assertion (gh-131561)
The `sys_tracing_threads` variable should be read inside `LOCK_SETUP()`.
files:
M Python/legacy_tracing.c
diff --git a/Python/legacy_tracing.c b/Python/legacy_tracing.c
index bafc2356280b37..d308a2a40992c6 100644
--- a/Python/legacy_tracing.c
+++ b/Python/legacy_tracing.c
@@ -594,10 +594,10 @@ _PyEval_SetTrace(PyThreadState *tstate, Py_tracefunc
func, PyObject *arg)
if (_PySys_Audit(current_tstate, "sys.settrace", NULL) < 0) {
return -1;
}
- assert(tstate->interp->sys_tracing_threads >= 0);
// needs to be decref'd outside of the lock
PyObject *old_traceobj;
LOCK_SETUP();
+ assert(tstate->interp->sys_tracing_threads >= 0);
Py_ssize_t tracing_threads = setup_tracing(tstate, func, arg,
&old_traceobj);
UNLOCK_SETUP();
Py_XDECREF(old_traceobj);
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]