[Python-checkins] gh-99377: Revert audit events for thread state creation and free, because the GIL is not properly held at these times (GH-99543)

zooba webhook-mailer at python.org
Wed Nov 16 19:24:22 EST 2022


https://github.com/python/cpython/commit/5fdd49dc653b4c14e3303c1eefd9d031602bbbf5
commit: 5fdd49dc653b4c14e3303c1eefd9d031602bbbf5
branch: main
author: Steve Dower <steve.dower at python.org>
committer: zooba <steve.dower at microsoft.com>
date: 2022年11月17日T00:24:16Z
summary:
gh-99377: Revert audit events for thread state creation and free, because the GIL is not properly held at these times (GH-99543)
files:
M Doc/c-api/init.rst
M Lib/test/test_audit.py
M Python/pystate.c
diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst
index 273838c1db28..afb17719a77a 100644
--- a/Doc/c-api/init.rst
+++ b/Doc/c-api/init.rst
@@ -1239,25 +1239,12 @@ All of the following functions must be called after :c:func:`Py_Initialize`.
 The global interpreter lock need not be held, but may be held if it is
 necessary to serialize calls to this function.
 
- .. audit-event:: cpython.PyThreadState_New id c.PyThreadState_New
-
- Raise an auditing event ``cpython.PyThreadState_New`` with Python's thread
- id as the argument. The event will be raised from the thread creating the new
- ``PyThreadState``, which may not be the new thread.
-
 
 .. c:function:: void PyThreadState_Clear(PyThreadState *tstate)
 
 Reset all information in a thread state object. The global interpreter lock
 must be held.
 
- .. audit-event:: cpython.PyThreadState_Clear id c.PyThreadState_Clear
-
- Raise an auditing event ``cpython.PyThreadState_Clear`` with Python's
- thread id as the argument. The event may be raised from a different thread
- than the one being cleared. Exceptions raised from a hook will be treated
- as unraisable and will not abort the operation.
-
 .. versionchanged:: 3.9
 This function now calls the :c:member:`PyThreadState.on_delete` callback.
 Previously, that happened in :c:func:`PyThreadState_Delete`.
diff --git a/Lib/test/test_audit.py b/Lib/test/test_audit.py
index 5a2997ac9e6f..70f8a77a4761 100644
--- a/Lib/test/test_audit.py
+++ b/Lib/test/test_audit.py
@@ -197,19 +197,11 @@ def test_threading(self):
 actual = [(ev[0], ev[2]) for ev in events]
 expected = [
 ("_thread.start_new_thread", "(<test_func>, (), None)"),
- ("cpython.PyThreadState_New", "(2,)"),
 ("test.test_func", "()"),
- ("cpython.PyThreadState_Clear", "(2,)"),
 ]
 
 self.assertEqual(actual, expected)
 
- def test_threading_abort(self):
- # Ensures that aborting PyThreadState_New raises the correct exception
- returncode, events, stderr = self.run_python("test_threading_abort")
- if returncode:
- self.fail(stderr)
-
 
 def test_wmi_exec_query(self):
 import_helper.import_module("_wmi")
diff --git a/Python/pystate.c b/Python/pystate.c
index a53a9a3494a0..c7f2386f8c63 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -875,11 +875,6 @@ PyThreadState_New(PyInterpreterState *interp)
 PyThreadState *tstate = new_threadstate(interp);
 if (tstate) {
 _PyThreadState_SetCurrent(tstate);
- if (PySys_Audit("cpython.PyThreadState_New", "K", tstate->id) < 0) {
- PyThreadState_Clear(tstate);
- _PyThreadState_DeleteCurrent(tstate);
- return NULL;
- }
 }
 return tstate;
 }
@@ -887,15 +882,7 @@ PyThreadState_New(PyInterpreterState *interp)
 PyThreadState *
 _PyThreadState_Prealloc(PyInterpreterState *interp)
 {
- PyThreadState *tstate = new_threadstate(interp);
- if (tstate) {
- if (PySys_Audit("cpython.PyThreadState_New", "K", tstate->id) < 0) {
- PyThreadState_Clear(tstate);
- _PyThreadState_Delete(tstate, 0);
- return NULL;
- }
- }
- return tstate;
+ return new_threadstate(interp);
 }
 
 // We keep this around for (accidental) stable ABI compatibility.
@@ -1043,10 +1030,6 @@ _PyInterpreterState_ClearModules(PyInterpreterState *interp)
 void
 PyThreadState_Clear(PyThreadState *tstate)
 {
- if (PySys_Audit("cpython.PyThreadState_Clear", "K", tstate->id) < 0) {
- PyErr_WriteUnraisable(NULL);
- }
-
 int verbose = _PyInterpreterState_GetConfig(tstate->interp)->verbose;
 
 if (verbose && tstate->cframe->current_frame != NULL) {


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /