diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index a5e23c790b0..163705025d2 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -261,7 +261,12 @@ bool Thread::WaitBlocker::should_unblock(Thread& thread, time_t, long) return IterationDecision::Continue; bool child_exited = child.is_dead(); - bool child_stopped = child.thread_count() && child.any_thread().state() == Thread::State::Stopped; + bool child_stopped = false; + if (child.thread_count()) { + auto& child_thread = child.any_thread(); + if (child_thread.state() == Thread::State::Stopped && !child_thread.has_pending_signal(SIGCONT)) + child_stopped = true; + } bool wait_finished = ((m_wait_options & WEXITED) && child_exited) || ((m_wait_options & WSTOPPED) && child_stopped);