summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/C API/2024-07-03-13-39-13.gh-issue-121058.MKi1MV.rst2
-rw-r--r--Python/pystate.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/C API/2024-07-03-13-39-13.gh-issue-121058.MKi1MV.rst b/Misc/NEWS.d/next/C API/2024-07-03-13-39-13.gh-issue-121058.MKi1MV.rst
new file mode 100644
index 0000000..133d8cb
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2024-07-03-13-39-13.gh-issue-121058.MKi1MV.rst
@@ -0,0 +1,2 @@
+``PyThreadState_Clear()`` now warns (and calls ``sys.excepthook``) if the
+thread state still has an active exception.
diff --git a/Python/pystate.c b/Python/pystate.c
index 01e54fc..44f55be 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -1649,6 +1649,11 @@ PyThreadState_Clear(PyThreadState *tstate)
"PyThreadState_Clear: warning: thread still has a frame\n");
}
+ if (verbose && tstate->current_exception != NULL) {
+ fprintf(stderr, "PyThreadState_Clear: warning: thread has an exception set\n");
+ _PyErr_Print(tstate);
+ }
+
/* At this point tstate shouldn't be used any more,
neither to run Python code nor for other uses.