Commit d0e11ec5 authored by Victor Stinner's avatar Victor Stinner

Issue #10756: atexit normalizes the exception before displaying it. Patch by

Andreas Stührk.

Backport a fix already applied to Python 3.2+ (4a82be47a948 + 5060a92a8597).
parent 2ec6b176
...@@ -65,6 +65,14 @@ class TestCase(unittest.TestCase): ...@@ -65,6 +65,14 @@ class TestCase(unittest.TestCase):
self.assertRaises(TypeError, atexit._run_exitfuncs) self.assertRaises(TypeError, atexit._run_exitfuncs)
def test_raise_unnormalized(self):
# Issue #10756: Make sure that an unnormalized exception is
# handled properly
atexit.register(lambda: 1 / 0)
self.assertRaises(ZeroDivisionError, atexit._run_exitfuncs)
self.assertIn("ZeroDivisionError", self.stream.getvalue())
def test_stress(self): def test_stress(self):
a = [0] a = [0]
def inc(): def inc():
......
...@@ -72,6 +72,9 @@ Core and Builtins ...@@ -72,6 +72,9 @@ Core and Builtins
Library Library
------- -------
- Issue #10756: atexit normalizes the exception before displaying it. Patch by
Andreas Stührk.
- Issue #8650: Make zlib module 64-bit clean. compress(), decompress() and - Issue #8650: Make zlib module 64-bit clean. compress(), decompress() and
their incremental counterparts now raise OverflowError if given an input their incremental counterparts now raise OverflowError if given an input
larger than 4GB, instead of silently truncating the input and returning larger than 4GB, instead of silently truncating the input and returning
......
...@@ -72,6 +72,7 @@ atexit_callfuncs(void) ...@@ -72,6 +72,7 @@ atexit_callfuncs(void)
PyErr_Fetch(&exc_type, &exc_value, &exc_tb); PyErr_Fetch(&exc_type, &exc_value, &exc_tb);
if (!PyErr_ExceptionMatches(PyExc_SystemExit)) { if (!PyErr_ExceptionMatches(PyExc_SystemExit)) {
PySys_WriteStderr("Error in atexit._run_exitfuncs:\n"); PySys_WriteStderr("Error in atexit._run_exitfuncs:\n");
PyErr_NormalizeException(&exc_type, &exc_value, &exc_tb);
PyErr_Display(exc_type, exc_value, exc_tb); PyErr_Display(exc_type, exc_value, exc_tb);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment