File tree Expand file tree Collapse file tree 2 files changed +16
-0
lines changed Expand file tree Collapse file tree 2 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -817,6 +817,17 @@ def test_disable_windows_exc_handler(self):
817
817
self .assertEqual (output , [])
818
818
self .assertEqual (exitcode , 0xC0000005 )
819
819
820
+ def test_cancel_later_without_dump_traceback_later (self ):
821
+ # bpo-37933: Calling cancel_dump_traceback_later()
822
+ # without dump_traceback_later() must not segfault.
823
+ code = dedent ("""
824
+ import faulthandler
825
+ faulthandler.cancel_dump_traceback_later()
826
+ """ )
827
+ output , exitcode = self .get_output (code )
828
+ self .assertEqual (output , [])
829
+ self .assertEqual (exitcode , 0 )
830
+
820
831
821
832
if __name__ == "__main__" :
822
833
unittest .main ()
Original file line number Diff line number Diff line change @@ -631,6 +631,11 @@ faulthandler_thread(void *unused)
631
631
static void
632
632
cancel_dump_traceback_later (void )
633
633
{
634
+ /* If not scheduled, nothing to cancel */
635
+ if (!thread .cancel_event ) {
636
+ return ;
637
+ }
638
+
634
639
/* Notify cancellation */
635
640
PyThread_release_lock (thread .cancel_event );
636
641
You can’t perform that action at this time.
0 commit comments