]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-117657: Fix some simple races in instrumentation.c (GH-120118) (#120444)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 13 Jun 2024 10:23:19 +0000 (12:23 +0200)
committerGitHub <noreply@github.com>
Thu, 13 Jun 2024 10:23:19 +0000 (18:23 +0800)
gh-117657: Fix some simple races in instrumentation.c (GH-120118)

* stop the world when setting local events
(cherry picked from commit b1b61dc4cee43920ef2b08d5ac94ddf08119c507)

Co-authored-by: Ken Jin <kenjin@python.org>
Python/instrumentation.c

index a5211ee5428cf805b3531a249941993619cc5633..ae790a1441b9339ad77e96893e7334e2db86bef9 100644 (file)
@@ -1977,7 +1977,7 @@ _PyMonitoring_SetLocalEvents(PyCodeObject *code, int tool_id, _PyMonitoringEvent
     }
 
     int res;
-    LOCK_CODE(code);
+    _PyEval_StopTheWorld(interp);
     if (allocate_instrumentation_data(code)) {
         res = -1;
         goto done;
@@ -1994,7 +1994,7 @@ _PyMonitoring_SetLocalEvents(PyCodeObject *code, int tool_id, _PyMonitoringEvent
     res = force_instrument_lock_held(code, interp);
 
 done:
-    UNLOCK_CODE();
+    _PyEval_StartTheWorld(interp);
     return res;
 }