[Python-checkins] bpo-37127: Remove _pending_calls.finishing (GH-19439)

Victor Stinner webhook-mailer at python.org
Wed Apr 8 16:11:00 EDT 2020


https://github.com/python/cpython/commit/cfc3c2f8b34d3864717ab584c5b6c260014ba55a
commit: cfc3c2f8b34d3864717ab584c5b6c260014ba55a
branch: master
author: Victor Stinner <vstinner at python.org>
committer: GitHub <noreply at github.com>
date: 2020-04-08T22:10:53+02:00
summary:

bpo-37127: Remove _pending_calls.finishing (GH-19439)

files:
M Include/internal/pycore_pystate.h
M Python/ceval.c

diff --git a/Include/internal/pycore_pystate.h b/Include/internal/pycore_pystate.h
index 50d906c4c6dde..fba0b6f920817 100644
--- a/Include/internal/pycore_pystate.h
+++ b/Include/internal/pycore_pystate.h
@@ -16,7 +16,6 @@ extern "C" {
 /* ceval state */
 
 struct _pending_calls {
-    int finishing;
     PyThread_type_lock lock;
     /* Request for running pending calls. */
     _Py_atomic_int calls_to_do;
diff --git a/Python/ceval.c b/Python/ceval.c
index 2e94f32f6c00b..e219ef388ccd1 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -547,18 +547,6 @@ _PyEval_AddPendingCall(PyThreadState *tstate,
     assert(pending->lock != NULL);
 
     PyThread_acquire_lock(pending->lock, WAIT_LOCK);
-    if (pending->finishing) {
-        PyThread_release_lock(pending->lock);
-
-        PyObject *exc, *val, *tb;
-        _PyErr_Fetch(tstate, &exc, &val, &tb);
-        _PyErr_SetString(tstate, PyExc_SystemError,
-                         "Py_AddPendingCall: cannot add pending calls "
-                         "(Python shutting down)");
-        _PyErr_Print(tstate);
-        _PyErr_Restore(tstate, exc, val, tb);
-        return -1;
-    }
     int result = _push_pending_call(pending, func, arg);
     PyThread_release_lock(pending->lock);
 
@@ -666,10 +654,6 @@ _Py_FinishPendingCalls(PyThreadState *tstate)
 
     struct _pending_calls *pending = &tstate->interp->ceval.pending;
 
-    PyThread_acquire_lock(pending->lock, WAIT_LOCK);
-    pending->finishing = 1;
-    PyThread_release_lock(pending->lock);
-
     if (!_Py_atomic_load_relaxed(&(pending->calls_to_do))) {
         return;
     }



More information about the Python-checkins mailing list