From 92d8a270a8f2dd4653633557d1fbbbca60769a64 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 23 Jul 2021 01:37:46 +0200 Subject: [PATCH] Early exit plugin-scanner on crash This also prevents the macOS crash-reporter from showing up. --- libs/auscan/au-scanner.cc | 6 +++++- libs/fst/vst2-scanner.cc | 6 +++++- libs/fst/vst3-scanner.cc | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libs/auscan/au-scanner.cc b/libs/auscan/au-scanner.cc index b838d739e5..92fb2697c6 100644 --- a/libs/auscan/au-scanner.cc +++ b/libs/auscan/au-scanner.cc @@ -24,6 +24,7 @@ #include #include #include +#include #include "pbd/error.h" #include "pbd/transmitter.h" @@ -102,7 +103,9 @@ sig_handler (int sig) printf ("Error: signal %d\n ---8<---\n", sig); PBD::stacktrace (std::cout, 15, 2); printf (" --->8---\n"); - ::exit (EXIT_FAILURE); + fflush(stdout); + fflush(stderr); + _exit (EXIT_FAILURE); } static void @@ -200,6 +203,7 @@ main (int argc, char **argv) signal (SIGSEGV, sig_handler); signal (SIGBUS, sig_handler); signal (SIGILL, sig_handler); + signal (SIGABRT, sig_handler); bool err = false; diff --git a/libs/fst/vst2-scanner.cc b/libs/fst/vst2-scanner.cc index 89d27926af..e237274b80 100644 --- a/libs/fst/vst2-scanner.cc +++ b/libs/fst/vst2-scanner.cc @@ -22,6 +22,7 @@ #include #include #include +#include #ifdef PLATFORM_WINDOWS #include @@ -147,7 +148,9 @@ sig_handler (int sig) printf ("Error: signal %d\n ---8<---\n", sig); PBD::stacktrace (std::cout, 15, 2); printf (" --->8---\n"); - ::exit (EXIT_FAILURE); + fflush(stdout); + fflush(stderr); + _exit (EXIT_FAILURE); } #endif @@ -258,6 +261,7 @@ main (int argc, char **argv) signal (SIGSEGV, sig_handler); signal (SIGBUS, sig_handler); signal (SIGILL, sig_handler); + signal (SIGABRT, sig_handler); #endif while (optind < argc) { diff --git a/libs/fst/vst3-scanner.cc b/libs/fst/vst3-scanner.cc index 21f86f523e..945ffd8f97 100644 --- a/libs/fst/vst3-scanner.cc +++ b/libs/fst/vst3-scanner.cc @@ -21,6 +21,7 @@ #include #include #include +#include #ifdef PLATFORM_WINDOWS #include @@ -134,7 +135,9 @@ sig_handler (int sig) printf ("Error: signal %d\n ---8<---\n", sig); PBD::stacktrace (std::cout, 15, 2); printf (" --->8---\n"); - ::exit (EXIT_FAILURE); + fflush(stdout); + fflush(stderr); + _exit (EXIT_FAILURE); } #endif @@ -243,6 +246,7 @@ main (int argc, char **argv) signal (SIGSEGV, sig_handler); signal (SIGBUS, sig_handler); signal (SIGILL, sig_handler); + signal (SIGABRT, sig_handler); #endif bool err = false;