diff options
-rw-r--r-- | lib/igt_core.c | 27 | ||||
-rw-r--r-- | runner/executor.c | 8 |
2 files changed, 25 insertions, 10 deletions
diff --git a/lib/igt_core.c b/lib/igt_core.c index e0989f53..64883d64 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -1852,14 +1852,29 @@ static struct { static igt_exit_handler_t exit_handler_fn[MAX_EXIT_HANDLERS]; static bool exit_handler_disabled; +static const struct { + int number; + const char *name; + size_t name_len; +} handled_signals[] = { #define SIGDEF(x) { x, #x, sizeof(#x) - 1 } #define SILENT(x) { x, NULL, 0 } -static const struct { int number; const char *name; size_t name_len; } handled_signals[] = - { SILENT(SIGINT), SILENT(SIGHUP), SILENT(SIGTERM), SILENT(SIGQUIT), - SILENT(SIGPIPE), SIGDEF(SIGABRT), SIGDEF(SIGSEGV), SIGDEF(SIGBUS), - SIGDEF(SIGFPE) }; + + SILENT(SIGINT), + SILENT(SIGHUP), + SILENT(SIGPIPE), + SILENT(SIGTERM), + + SIGDEF(SIGQUIT), /* used by igt_runner for its external timeout */ + + SIGDEF(SIGABRT), + SIGDEF(SIGSEGV), + SIGDEF(SIGBUS), + SIGDEF(SIGFPE) + #undef SILENT #undef SIGDEF +}; static int install_sig_handler(int sig_num, sighandler_t handler) { @@ -1940,15 +1955,15 @@ static void fatal_sig_handler(int sig) __write_stderr(handled_signals[i].name, handled_signals[i].name_len); write_stderr(".\n"); + + print_backtrace_sig_safe(); } if (crash_signal(sig)) { /* Linux standard to return exit code as 128 + signal */ if (!failed_one) igt_exitcode = 128 + sig; - failed_one = true; - print_backtrace_sig_safe(); if (in_subtest) exit_subtest("CRASH"); diff --git a/runner/executor.c b/runner/executor.c index a7d1f5f8..54c530b7 100644 --- a/runner/executor.c +++ b/runner/executor.c @@ -510,11 +510,11 @@ static int monitor_output(pid_t child, switch (killed) { case 0: if (settings->log_level >= LOG_LEVEL_NORMAL) { - printf("Timeout. Killing the current test with SIGTERM.\n"); + printf("Timeout. Killing the current test with SIGQUIT.\n"); fflush(stdout); } - killed = SIGTERM; + killed = SIGQUIT; if (!kill_child(killed, child)) return -1; @@ -526,7 +526,7 @@ static int monitor_output(pid_t child, watchdogs_set_timeout(120); intervals_left = timeout_intervals = 1; break; - case SIGTERM: + case SIGQUIT: if (settings->log_level >= LOG_LEVEL_NORMAL) { printf("Timeout. Killing the current test with SIGKILL.\n"); fflush(stdout); @@ -706,7 +706,7 @@ static int monitor_output(pid_t child, aborting = true; timeout = 2; - killed = SIGTERM; + killed = SIGQUIT; if (!kill_child(killed, child)) return -1; |