From 24201d497cf23d399cceadad8058261c13ae536f Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Sun, 13 Oct 2013 21:53:13 +0200 Subject: Issue #18776: atexit callbacks now display their full traceback when they raise an exception. --- Python/pythonrun.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Python/pythonrun.c') diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 9ef653b57a..ee277b67f2 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1880,6 +1880,16 @@ PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) { PyObject *seen; PyObject *f = PySys_GetObject("stderr"); + if (PyExceptionInstance_Check(value) + && tb != NULL && PyTraceBack_Check(tb)) { + /* Put the traceback on the exception, otherwise it won't get + displayed. See issue #18776. */ + PyObject *cur_tb = PyException_GetTraceback(value); + if (cur_tb == NULL) + PyException_SetTraceback(value, tb); + else + Py_DECREF(cur_tb); + } if (f == Py_None) { /* pass */ } -- cgit v1.2.1