From 9aa6dd6b786d42f6c131d03cba58e9999e0644d0 Mon Sep 17 00:00:00 2001 From: Itamar Date: Wed, 15 Sep 2021 15:55:48 +0300 Subject: [PATCH] Kernel: Unblock tracer process in Process:unblock_waiters() Since the tracer process may not be our parent process, we need to explicitly unblock it (instead of the parent) if we are being traced. --- Kernel/Process.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 1b53fc2e7d..3d58a58278 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -661,8 +661,14 @@ void Process::disowned_by_waiter(Process& process) void Process::unblock_waiters(Thread::WaitBlocker::UnblockFlags flags, u8 signal) { - if (auto parent = Process::from_pid(ppid())) - parent->m_wait_blocker_set.unblock(*this, flags, signal); + RefPtr waiter_process; + if (auto* my_tracer = tracer()) + waiter_process = Process::from_pid(my_tracer->tracer_pid()); + else + waiter_process = Process::from_pid(ppid()); + + if (waiter_process) + waiter_process->m_wait_blocker_set.unblock(*this, flags, signal); } void Process::die()