From 1b61d9ddc1afdddd429e10eeda90a31ae7e69261 Mon Sep 17 00:00:00 2001 From: turret Date: Thu, 11 Jan 2024 19:16:21 +0000 Subject: init: panic on child exit status !=0 also: modify log to exit status 0 on panic instead of 1 (only runs exit on panicmode respawn which shouldn't cause a fatal termination) --- init/init.c | 3 +++ init/log.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/init/init.c b/init/init.c index fa0e32f..e82a504 100644 --- a/init/init.c +++ b/init/init.c @@ -110,6 +110,9 @@ int main(void) if(subsystem_handle_term(process) > 0) print(LOG_WARNING "init: failed to reap process %d", process); + if(siginfo.si_status != 0) { + panic("init: process %d exited with non-zero status (%d)", siginfo.si_status); + } } } diff --git a/init/log.c b/init/log.c index 4fe748e..a3d0a7a 100644 --- a/init/log.c +++ b/init/log.c @@ -185,7 +185,7 @@ void _panic(const char *fileorigin, if(pid != mainpid && mode == PANICMODE_RESPAWN) { /* we want to let the main process handle the rest */ subsystem_change_mode(pid, mode); - syscall(SYS_exit_group, 1); + syscall(SYS_exit_group, 0); } } -- cgit v1.2.3