From 2a85a7473ae86b627a7c2f65fb9e5faa051fbd99 Mon Sep 17 00:00:00 2001 From: apio Date: Thu, 4 Jan 2024 21:04:24 +0100 Subject: [PATCH] kernel: Show stacktraces on all signal terminations --- kernel/src/arch/x86_64/CPU.cpp | 2 -- kernel/src/thread/Thread.cpp | 5 ++++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/src/arch/x86_64/CPU.cpp b/kernel/src/arch/x86_64/CPU.cpp index 2855907c..f0cadfea 100644 --- a/kernel/src/arch/x86_64/CPU.cpp +++ b/kernel/src/arch/x86_64/CPU.cpp @@ -95,8 +95,6 @@ void handle_cpu_exception(int signo, const char* err, Registers* regs) kerrorln("R12: %.16lx R13: %.16lx R14: %.16lx R15: %.16lx", regs->r12, regs->r13, regs->r14, regs->r15); kerrorln("RIP: %.16lx CS: %.16lx SS: %.16lx FLAGS: %.16lx", regs->rip, regs->cs, regs->ss, regs->rflags); - CPU::print_stack_trace_at(regs); - if (!is_in_kernel(regs)) { auto* current = Scheduler::current(); diff --git a/kernel/src/thread/Thread.cpp b/kernel/src/thread/Thread.cpp index f572e35c..be9f88b8 100644 --- a/kernel/src/thread/Thread.cpp +++ b/kernel/src/thread/Thread.cpp @@ -187,7 +187,10 @@ void Thread::process_pending_signals(Registers* current_regs) switch (action) { case DefaultSignalAction::Ignore: return; - case DefaultSignalAction::Terminate: exit_and_signal_parent(signo | _SIGBIT); + case DefaultSignalAction::Terminate: + kwarnln("Terminating thread %d with signal %d", id, signo); + CPU::print_stack_trace_at(current_regs); + exit_and_signal_parent(signo | _SIGBIT); case DefaultSignalAction::Stop: stop(); default: return; }