From: Michalis Pappas Date: Fri, 12 Jan 2024 15:49:43 +0000 (+0100) Subject: lib/posix-process/signal: Terminate process on SIG_TERM X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=078915278a24a1fb2bdf50d8f81bffd208c51140;p=unikraft%2Funikraft.git lib/posix-process/signal: Terminate process on SIG_TERM Call pprocess_exit() and block the calling thread to properly terminate the process upon SIG_TERM. Signed-off-by: Michalis Pappas Approved-by: Andrei Tatar Reviewed-by: Andrei Tatar Reviewed-by: Sergiu Moga GitHub-Closes: #1630 --- diff --git a/lib/posix-process/signal/deliver.c b/lib/posix-process/signal/deliver.c index 67f022691..956279f94 100644 --- a/lib/posix-process/signal/deliver.c +++ b/lib/posix-process/signal/deliver.c @@ -9,6 +9,7 @@ #include #include +#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)