diff options
author | Steve Dower <steve.dower@python.org> | 2019-11-28 16:46:11 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-28 16:46:11 (GMT) |
commit | bea33f5e1db6e4a554919a82894f44568576e979 (patch) | |
tree | 37789378933d7091eb0012d6ad3277aa8685a979 /Python/pythonrun.c | |
parent | 02519f75d15b063914a11351da30178ca4ceb54b (diff) | |
download | cpython-bea33f5e1db6e4a554919a82894f44568576e979.zip cpython-bea33f5e1db6e4a554919a82894f44568576e979.tar.gz cpython-bea33f5e1db6e4a554919a82894f44568576e979.tar.bz2 |
bpo-38920: Add audit hooks for when sys.excepthook and sys.unraisable hooks are invoked (GH-17392)
Also fixes some potential segfaults in unraisable hook handling.
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r-- | Python/pythonrun.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 77a95ce..b68a0b5 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -695,6 +695,14 @@ _PyErr_PrintEx(PyThreadState *tstate, int set_sys_last_vars) } } hook = _PySys_GetObjectId(&PyId_excepthook); + if (PySys_Audit("sys.excepthook", "OOOO", hook ? hook : Py_None, + exception, v, tb) < 0) { + if (PyErr_ExceptionMatches(PyExc_RuntimeError)) { + PyErr_Clear(); + goto done; + } + _PyErr_WriteUnraisableMsg("in audit hook", NULL); + } if (hook) { PyObject* stack[3]; PyObject *result; |