|
@@ -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);
|