From eec9331b207cf7def6f04156d00a8479d1630dd3 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 18 Aug 2016 18:13:10 +0200 Subject: Fix SystemError in "raise" statement Issue #27558: Fix a SystemError in the implementation of "raise" statement. In a brand new thread, raise a RuntimeError since there is no active exception to reraise. Patch written by Xiang Zhang. --- Lib/test/test_threading.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'Lib/test/test_threading.py') diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 1c9c1ea534..b63050982a 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -1043,6 +1043,24 @@ class ThreadingExceptionTests(BaseTestCase): self.assertEqual(out, b'') self.assertNotIn("Unhandled exception", err.decode()) + def test_bare_raise_in_brand_new_thread(self): + def bare_raise(): + raise + + class Issue27558(threading.Thread): + exc = None + + def run(self): + try: + bare_raise() + except Exception as exc: + self.exc = exc + + thread = Issue27558() + thread.start() + thread.join() + self.assertIsNotNone(thread.exc) + self.assertIsInstance(thread.exc, RuntimeError) class TimerTests(BaseTestCase): -- cgit v1.2.1