mirror of
https://github.com/RGBCube/serenity
synced 2025-05-24 01:05:08 +00:00
Kernel: Let the wait blocker inspect *all* child threads of a process
Previously would only grab the first thread in the thread list that had the same PID as our waitee and check if it was stopped.
This commit is contained in:
parent
0e7f85c24a
commit
24d5855428
1 changed files with 7 additions and 3 deletions
|
@ -264,9 +264,13 @@ bool Thread::WaitBlocker::should_unblock(Thread& thread, time_t, long)
|
|||
bool child_exited = child.is_dead();
|
||||
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;
|
||||
child.for_each_thread([&](auto& child_thread) {
|
||||
if (child_thread.state() == Thread::State::Stopped && !child_thread.has_pending_signal(SIGCONT)) {
|
||||
child_stopped = true;
|
||||
return IterationDecision::Break;
|
||||
}
|
||||
return IterationDecision::Continue;
|
||||
});
|
||||
}
|
||||
|
||||
bool wait_finished = ((m_wait_options & WEXITED) && child_exited)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue