bpo-37933: Fix faulthandler.cancel_dump_traceback_later() (GH-15440)
Fix faulthandler.cancel_dump_traceback_later() call if cancel_dump_traceback_later() was not called previously.
This commit is contained in:
parent
88ea166dad
commit
e278335a6e
|
@ -817,6 +817,17 @@ class FaultHandlerTests(unittest.TestCase):
|
|||
self.assertEqual(output, [])
|
||||
self.assertEqual(exitcode, 0xC0000005)
|
||||
|
||||
def test_cancel_later_without_dump_traceback_later(self):
|
||||
# bpo-37933: Calling cancel_dump_traceback_later()
|
||||
# without dump_traceback_later() must not segfault.
|
||||
code = dedent("""
|
||||
import faulthandler
|
||||
faulthandler.cancel_dump_traceback_later()
|
||||
""")
|
||||
output, exitcode = self.get_output(code)
|
||||
self.assertEqual(output, [])
|
||||
self.assertEqual(exitcode, 0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
@ -631,6 +631,11 @@ faulthandler_thread(void *unused)
|
|||
static void
|
||||
cancel_dump_traceback_later(void)
|
||||
{
|
||||
/* If not scheduled, nothing to cancel */
|
||||
if (!thread.cancel_event) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Notify cancellation */
|
||||
PyThread_release_lock(thread.cancel_event);
|
||||
|
||||
|
|
Loading…
Reference in New Issue