From d63c8abbfda3fbae1cd5f81d3b9d04d948149e20 Mon Sep 17 00:00:00 2001 From: apio Date: Fri, 24 Mar 2023 00:52:17 +0100 Subject: [PATCH] kernel/x86_64: Terminate page faults in a waitpid-friendly way --- kernel/src/arch/x86_64/CPU.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/src/arch/x86_64/CPU.cpp b/kernel/src/arch/x86_64/CPU.cpp index bb815fbd..2a8ed6a1 100644 --- a/kernel/src/arch/x86_64/CPU.cpp +++ b/kernel/src/arch/x86_64/CPU.cpp @@ -71,7 +71,10 @@ void decode_page_fault_error_code(u64 code) { // FIXME: Kill this process with SIGSEGV once we have signals and all that. kerrorln("Current task %zu was terminated because of a page fault", Scheduler::current()->id); - kernel_exit(); + Scheduler::current()->state = ThreadState::Exited; + Scheduler::current()->status = 127; + kernel_yield(); + unreachable(); } CPU::print_stack_trace_at(regs);