LibTest: Do not cleanly exit when abort() is called

Instead, do the cleanup, remove the signal handler, and abort() again.
This commit is contained in:
Ali Mohammad Pur 2021-05-26 23:03:58 +04:30 committed by Ali Mohammad Pur
parent 578bf6c45e
commit 13c1514889
Notes: sideshowbarker 2024-07-18 17:19:23 +09:00
2 changed files with 17 additions and 2 deletions

View file

@ -181,11 +181,16 @@ inline void TestRunnerGlobalObject::initialize_global_object()
} }
} }
inline void cleanup_and_exit() inline void cleanup()
{ {
// Clear the taskbar progress. // Clear the taskbar progress.
if (TestRunner::the() && TestRunner::the()->is_printing_progress()) if (TestRunner::the() && TestRunner::the()->is_printing_progress())
warn("\033]9;-1;\033\\"); warn("\033]9;-1;\033\\");
}
inline void cleanup_and_exit()
{
cleanup();
exit(1); exit(1);
} }

View file

@ -32,7 +32,17 @@ static StringView g_program_name { "test-js"sv };
static void handle_sigabrt(int) static void handle_sigabrt(int)
{ {
dbgln("{}: SIGABRT received, cleaning up.", g_program_name); dbgln("{}: SIGABRT received, cleaning up.", g_program_name);
cleanup_and_exit(); cleanup();
struct sigaction act;
memset(&act, 0, sizeof(act));
act.sa_flags = SA_NOCLDWAIT;
act.sa_handler = SIG_DFL;
int rc = sigaction(SIGABRT, &act, nullptr);
if (rc < 0) {
perror("sigaction");
exit(1);
}
abort();
} }
int main(int argc, char** argv) int main(int argc, char** argv)