diff --git a/src/lxc/start.c b/src/lxc/start.c index f66f50a7b..d7f079979 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -380,6 +380,12 @@ static int signal_handler(int fd, uint32_t events, void *data, return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0; } + if (siginfo.ssi_signo != SIGCHLD) { + kill(hdlr->pid, siginfo.ssi_signo); + INFO("Forwarded signal %d to pid %d", siginfo.ssi_signo, hdlr->pid); + return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0; + } + /* More robustness, protect ourself from a SIGCHLD sent * by a process different from the container init. */ @@ -389,12 +395,6 @@ static int signal_handler(int fd, uint32_t events, void *data, return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0; } - if (siginfo.ssi_signo != SIGCHLD) { - kill(hdlr->pid, siginfo.ssi_signo); - INFO("Forwarded signal %d to pid %d", siginfo.ssi_signo, hdlr->pid); - return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0; - } - if (siginfo.ssi_code == CLD_STOPPED) { INFO("Container init process was stopped"); return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0;