https://github.com/python/cpython/commit/589382bd04e4326c5582d96f71fe93b3d6365d53
commit: 589382bd04e4326c5582d96f71fe93b3d6365d53
branch: 3.13
author: Kumar Aditya <[email protected]>
committer: kumaraditya303 <[email protected]>
date: 2025-03-13T09:41:26Z
summary:
[3.13] gh-131141: fix data race in instrumentation while registering callback
(#131166)
files:
A
Misc/NEWS.d/next/Core_and_Builtins/2025-03-12-11-19-46.gh-issue-131141.tQz594.rst
M Python/instrumentation.c
diff --git
a/Misc/NEWS.d/next/Core_and_Builtins/2025-03-12-11-19-46.gh-issue-131141.tQz594.rst
b/Misc/NEWS.d/next/Core_and_Builtins/2025-03-12-11-19-46.gh-issue-131141.tQz594.rst
new file mode 100644
index 00000000000000..c1ea679864fb15
--- /dev/null
+++
b/Misc/NEWS.d/next/Core_and_Builtins/2025-03-12-11-19-46.gh-issue-131141.tQz594.rst
@@ -0,0 +1 @@
+Fix data race in :data:`sys.monitoring` instrumentation while registering
callback.
diff --git a/Python/instrumentation.c b/Python/instrumentation.c
index 3481b5df14288b..d4bca27f22cd74 100644
--- a/Python/instrumentation.c
+++ b/Python/instrumentation.c
@@ -1399,9 +1399,10 @@ _PyMonitoring_RegisterCallback(int tool_id, int
event_id, PyObject *obj)
PyInterpreterState *is = _PyInterpreterState_GET();
assert(0 <= tool_id && tool_id < PY_MONITORING_TOOL_IDS);
assert(0 <= event_id && event_id < _PY_MONITORING_EVENTS);
- PyObject *callback =
_Py_atomic_exchange_ptr(&is->monitoring_callables[tool_id][event_id],
- Py_XNewRef(obj));
-
+ _PyEval_StopTheWorld(is);
+ PyObject *callback = is->monitoring_callables[tool_id][event_id];
+ is->monitoring_callables[tool_id][event_id] = Py_XNewRef(obj);
+ _PyEval_StartTheWorld(is);
return callback;
}
_______________________________________________
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]