summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/C API/2020-03-13-16-44-23.bpo-35370.sXRA-r.rst2
-rw-r--r--Python/ceval.c10
2 files changed, 10 insertions, 2 deletions
diff --git a/Misc/NEWS.d/next/C API/2020-03-13-16-44-23.bpo-35370.sXRA-r.rst b/Misc/NEWS.d/next/C API/2020-03-13-16-44-23.bpo-35370.sXRA-r.rst
new file mode 100644
index 0000000..d3f1d29
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2020-03-13-16-44-23.bpo-35370.sXRA-r.rst
@@ -0,0 +1,2 @@
+If :c:func:`PySys_Audit` fails in :c:func:`PyEval_SetProfile` or
+:c:func:`PyEval_SetTrace`, log the error as an unraisable exception.
diff --git a/Python/ceval.c b/Python/ceval.c
index fc4f718..b359fb0 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4620,7 +4620,10 @@ void
PyEval_SetProfile(Py_tracefunc func, PyObject *arg)
{
PyThreadState *tstate = _PyThreadState_GET();
- (void)_PyEval_SetProfile(tstate, func, arg);
+ if (_PyEval_SetProfile(tstate, func, arg) < 0) {
+ /* Log PySys_Audit() error */
+ _PyErr_WriteUnraisableMsg("in PyEval_SetProfile", NULL);
+ }
}
int
@@ -4661,7 +4664,10 @@ void
PyEval_SetTrace(Py_tracefunc func, PyObject *arg)
{
PyThreadState *tstate = _PyThreadState_GET();
- (void)_PyEval_SetTrace(tstate, func, arg);
+ if (_PyEval_SetTrace(tstate, func, arg) < 0) {
+ /* Log PySys_Audit() error */
+ _PyErr_WriteUnraisableMsg("in PyEval_SetTrace", NULL);
+ }
}