]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-99377: Revert audit events for thread state creation and free, because the GIL...
authorSteve Dower <steve.dower@python.org>
Thu, 17 Nov 2022 00:24:16 +0000 (00:24 +0000)
committerGitHub <noreply@github.com>
Thu, 17 Nov 2022 00:24:16 +0000 (00:24 +0000)
Doc/c-api/init.rst
Lib/test/test_audit.py
Python/pystate.c

index 273838c1db28ea50e4577943b8371666502241ab..afb17719a77ab255a5e1587b3abf621b5864706c 100644 (file)
@@ -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`.
index 5a2997ac9e6f18cd56612ae6cf194dd77140d0f1..70f8a77a4761a7b991edcf80b6189f6ded75cbb7 100644 (file)
@@ -197,19 +197,11 @@ class AuditTest(unittest.TestCase):
         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")
index a53a9a3494a02affadc96424fa853c9df2522403..c7f2386f8c63291ae5ed0ddc1ee0f19d9f7a5594 100644 (file)
@@ -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) {