From c2d96d4500c297227bcd7f95e82f9d2d44f9e79f Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 22 Apr 2008 19:01:23 +0000 Subject: [PATCH] Added back accidentally removed check for B_THREAD_SUSPENDED when delivering a kill signal. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25102 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/signal.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/signal.cpp b/src/system/kernel/signal.cpp index 2b527383c0..1bcb584d22 100644 --- a/src/system/kernel/signal.cpp +++ b/src/system/kernel/signal.cpp @@ -490,13 +490,19 @@ deliver_signal(struct thread *thread, uint signal, uint32 flags) mainThread->sig_pending |= SIGNAL_TO_MASK(SIGKILLTHR); // Wake up main thread - thread_interrupt(mainThread, true); + if (mainThread->state == B_THREAD_SUSPENDED) + scheduler_enqueue_in_run_queue(mainThread); + else + thread_interrupt(mainThread, true); // Supposed to fall through } case SIGKILLTHR: // Wake up suspended threads and interrupt waiting ones - thread_interrupt(thread, true); + if (thread->state == B_THREAD_SUSPENDED) + scheduler_enqueue_in_run_queue(thread); + else + thread_interrupt(thread, true); break; case SIGCONT: