* 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
This commit is contained in:
parent
f1488adbf7
commit
358b93352e
@ -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 <ksignal.h>
|
||||
|
||||
#include <stddef.h>
|
||||
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user