← Commit list

5222d31a1

Eric Andersen
Eric Andersen
2002-07-03
FAILED Duration: 5s

Subject

Patch from till busch -- unblock all signals in exec_signal() before calling exec()

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

init/init.c+16 -0
@@ -758,10 +758,26 @@ static void shutdown_system(void)
static void exec_signal(int sig)
{
struct init_action *a, *tmp;
+ sigset_t unblock_signals;
+
for (a = init_action_list; a; a = tmp) {
tmp = a->next;
if (a->action & RESTART) {
shutdown_system();
+
+ /* unblock all signals, blocked in shutdown_system() */
+ sigemptyset(&unblock_signals);
+ sigaddset(&unblock_signals, SIGHUP);
+ sigaddset(&unblock_signals, SIGCHLD);
+ sigaddset(&unblock_signals, SIGUSR1);
+ sigaddset(&unblock_signals, SIGUSR2);
+ sigaddset(&unblock_signals, SIGINT);
+ sigaddset(&unblock_signals, SIGTERM);
+ sigaddset(&unblock_signals, SIGCONT);
+ sigaddset(&unblock_signals, SIGSTOP);
+ sigaddset(&unblock_signals, SIGTSTP);
+ sigprocmask(SIG_UNBLOCK, &unblock_signals, NULL);
+
message(CONSOLE|LOG, "\rTrying to re-exec %s\n", a->command);
execl(a->command, a->command, NULL);