https://github.com/python/cpython/commit/94fbe97bbef374e240decc8a69107a639151ba02
commit: 94fbe97bbef374e240decc8a69107a639151ba02
branch: 3.13
author: Miss Islington (bot) <31488909+miss-isling...@users.noreply.github.com>
committer: colesbury <colesb...@gmail.com>
date: 2025-03-21T18:48:40Z
summary:

[3.13] gh-117657: Fix TSAN data race in _PyEval_SetTrace assertion (gh-131561) 
(#131564)

The `sys_tracing_threads` variable should be read inside `LOCK_SETUP()`.
(cherry picked from commit 0de5e0c5442abddbe17481ef450e4abc992058f5)

Co-authored-by: Sam Gross <colesb...@gmail.com>

files:
M Python/legacy_tracing.c

diff --git a/Python/legacy_tracing.c b/Python/legacy_tracing.c
index 9cc3af1f5e162c..8a9ad3601a379e 100644
--- a/Python/legacy_tracing.c
+++ b/Python/legacy_tracing.c
@@ -596,10 +596,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 -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to