diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 1e0e871309..53b6f49b63 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -499,7 +499,6 @@ ShouldUnblockThread Thread::dispatch_signal(u8 signal) if (signal == SIGSTOP) { if (!is_stopped()) { m_stop_signal = SIGSTOP; - m_stop_state = m_state; set_state(State::Stopped); } return ShouldUnblockThread::No; @@ -526,7 +525,6 @@ ShouldUnblockThread Thread::dispatch_signal(u8 signal) // make sure SemiPermanentBlocker is unblocked if (m_blocker && m_blocker->is_reason_signal()) unblock(); - m_stop_state = m_state; set_state(Stopped); return ShouldUnblockThread::No; } @@ -757,6 +755,10 @@ void Thread::set_state(State new_state) ASSERT(m_blocker != nullptr); } + if (new_state == Stopped) { + m_stop_state = m_state; + } + m_state = new_state; if (m_process.pid() != 0) { Scheduler::update_state_for_thread(*this);