diff options
Diffstat (limited to 'system/musl/0007-abort-raise-SIGABRT-again-if-signal-is-ignored.patch')
-rw-r--r-- | system/musl/0007-abort-raise-SIGABRT-again-if-signal-is-ignored.patch | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/system/musl/0007-abort-raise-SIGABRT-again-if-signal-is-ignored.patch b/system/musl/0007-abort-raise-SIGABRT-again-if-signal-is-ignored.patch deleted file mode 100644 index 4ab303c7d..000000000 --- a/system/musl/0007-abort-raise-SIGABRT-again-if-signal-is-ignored.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 1316aae0c862240ff58b1cf38c92cd8cefd02a91 Mon Sep 17 00:00:00 2001 -From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> -Date: Tue, 17 Apr 2018 22:08:48 -0500 -Subject: [PATCH 7/7] abort: raise SIGABRT again if signal is ignored - -POSIX requires that abort() gives the SIGABRT status to waitpid(3) and -friends. If a signal handler is installed, and erroneously returns, -then the status given to waitpid(3) is SIGSEGV instead of SIGABRT. - -This change gives another opportunity for the proper SIGABRT status to -be given to any process monitoring this one's process, before we fall -back to a_crash(), which should be sufficient. ---- - src/exit/abort.c | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/src/exit/abort.c b/src/exit/abort.c -index ecc0f735..5e5a87c3 100644 ---- a/src/exit/abort.c -+++ b/src/exit/abort.c -@@ -1,13 +1,31 @@ - #include <stdlib.h> - #include <signal.h> -+#include <string.h> - #include "syscall.h" - #include "pthread_impl.h" - #include "atomic.h" - - _Noreturn void abort(void) - { -+ struct sigaction abrtaction; -+ sigset_t abrtset; -+ - raise(SIGABRT); - __block_all_sigs(0); -+ -+ /* Unblock just SIGABRT, and set default handler */ -+ sigemptyset(&abrtset); -+ sigaddset(&abrtset, SIGABRT); -+ sigprocmask(SIG_UNBLOCK, &abrtset, 0); -+ -+ memset(&abrtaction, 0, sizeof(struct sigaction)); -+ abrtaction.sa_handler = SIG_DFL; -+ -+ sigaction(SIGABRT, &abrtaction, NULL); -+ -+ raise(SIGABRT); -+ -+ /* Ok, give up. */ - a_crash(); - raise(SIGKILL); - _Exit(127); --- -2.15.0 - |