@@ -333,14 +333,17 @@ faulthandler_fatal_error(int signum)
333333 size_t i ;
334334 fault_handler_t * handler = NULL ;
335335 int save_errno = errno ;
336+ int found = 0 ;
336337
337338 if (!fatal_error .enabled )
338339 return ;
339340
340341 for (i = 0 ; i < faulthandler_nsignals ; i ++ ) {
341342 handler = & faulthandler_handlers [i ];
342- if (handler -> signum == signum )
343+ if (handler -> signum == signum ) {
344+ found = 1 ;
343345 break ;
346+ }
344347 }
345348 if (handler == NULL ) {
346349 /* faulthandler_nsignals == 0 (unlikely) */
@@ -350,9 +353,18 @@ faulthandler_fatal_error(int signum)
350353 /* restore the previous handler */
351354 faulthandler_disable_fatal_handler (handler );
352355
353- PUTS (fd , "Fatal Python error: " );
354- PUTS (fd , handler -> name );
355- PUTS (fd , "\n\n" );
356+ if (found ) {
357+ PUTS (fd , "Fatal Python error: " );
358+ PUTS (fd , handler -> name );
359+ PUTS (fd , "\n\n" );
360+ }
361+ else {
362+ char unknown_signum [23 ] = {0 ,};
363+ snprintf (unknown_signum , 23 , "%d" , signum );
364+ PUTS (fd , "Fatal Python error from unexpected signum: " );
365+ PUTS (fd , unknown_signum );
366+ PUTS (fd , "\n\n" );
367+ }
356368
357369 faulthandler_dump_traceback (fd , fatal_error .all_threads ,
358370 fatal_error .interp );
0 commit comments