]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/posix-process/signal: Terminate process on SIG_TERM
authorMichalis Pappas <michalis@unikraft.io>
Fri, 12 Jan 2024 15:49:43 +0000 (16:49 +0100)
committerUnikraft Bot <monkey@unikraft.io>
Wed, 30 Apr 2025 09:56:07 +0000 (09:56 +0000)
Call pprocess_exit() and block the calling thread to properly
terminate the process upon SIG_TERM.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Approved-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Sergiu Moga <sergiu@unikraft.io>
GitHub-Closes: #1630

lib/posix-process/signal/deliver.c

index 67f022691e07c82bd14f7c41c491c60f5e000572..956279f94ab0c8abe9439cc80de8a5c02c243767 100644 (file)
@@ -9,6 +9,7 @@
 #include <uk/process.h>
 #include <uk/syscall.h>
 
+#include "process.h"
 #include "sigset.h"
 #include "signal.h"
 #include "siginfo.h"
@@ -20,8 +21,15 @@ void pprocess_signal_call_handler_with_stack(int signum, siginfo_t *si,
 
 static void uk_sigact_term(int __unused sig)
 {
-       uk_pr_warn("tid %d terminated by signal\n", uk_sys_gettid());
-       pprocess_kill(uk_pprocess_current());
+       struct posix_process *pprocess;
+
+       pprocess = uk_pprocess_current();
+       UK_ASSERT(pprocess);
+
+       uk_pr_info("pid: %d terminated by signal\n", pprocess->pid);
+
+       pprocess_exit(pprocess, POSIX_PROCESS_KILLED, sig);
+       uk_sched_thread_exit(); /* noreturn */
 }
 
 static void uk_sigact_ign(int __unused sig)