From 79d3f279fd68c4095f3cf118aa527808a29ab634 Mon Sep 17 00:00:00 2001 From: DH Date: Sun, 21 Sep 2025 10:44:42 +0300 Subject: [PATCH] orbis: fixed race on signal handling --- orbis-kernel/src/KernelContext.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/orbis-kernel/src/KernelContext.cpp b/orbis-kernel/src/KernelContext.cpp index 7ffc11f66..7a8c85baa 100644 --- a/orbis-kernel/src/KernelContext.cpp +++ b/orbis-kernel/src/KernelContext.cpp @@ -382,7 +382,9 @@ void Thread::setSigMask(SigSet newSigMask) { void Thread::where() { tproc->ops->where(this); } bool Thread::unblock() { - if (interruptedMtx.load(std::memory_order::relaxed) != 0) { + std::uint32_t prev = interruptedMtx.exchange(0, std::memory_order::relaxed); + if (prev != 0) { + interruptedMtx.notify_one(); return false; }