From 358b93352e3c45163ec806a8dc95342ebc1b4f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 15 Oct 2009 11:53:19 +0000 Subject: [PATCH] * Moved SIGABRT to the signals that kill the process. Not sure if it's a good idea to always send SIGKILL to the main thread, though. I'm not really getting more insight by reading the POSIX specs. * Anyway, in the mean time, this fixes bug #4784. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33599 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/signal.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/system/kernel/signal.cpp b/src/system/kernel/signal.cpp index 601e48c966..b0eeba4726 100644 --- a/src/system/kernel/signal.cpp +++ b/src/system/kernel/signal.cpp @@ -1,12 +1,14 @@ /* - * Copyright 2002-2008, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2002-2009, Axel Dörfler, axeld@pinc-software.de. * Copyright 2002, Angelo Mottola, a.mottola@libero.it. * * Distributed under the terms of the MIT License. */ + /*! POSIX signals handling routines */ + #include #include @@ -391,6 +393,7 @@ handle_signals(struct thread *thread) case SIGFPE: case SIGILL: case SIGTRAP: + case SIGABRT: // If this is the main thread, we just fall through and let // this signal kill the team. Otherwise we send a SIGKILL to // the main thread first, since the signal will kill this @@ -398,7 +401,6 @@ handle_signals(struct thread *thread) if (thread != thread->team->main_thread) send_signal(thread->team->main_thread->id, SIGKILL); case SIGQUIT: - case SIGABRT: case SIGPOLL: case SIGPROF: case SIGSYS: @@ -488,7 +490,7 @@ is_signal_blocked(int signal) thread lock held. */ static status_t -deliver_signal(struct thread *thread, uint signal, uint32 flags, +deliver_signal(struct thread *thread, uint signal, uint32 flags, bool &reschedule) { if (flags & B_CHECK_PERMISSION) {