From 23154d5764c06b68a5c154cecd89524ebe747ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Thu, 18 Apr 2013 10:30:33 +0200 Subject: [PATCH] Revert "start: Detect early failure of the new child" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5a5c35c3a01afec515e688c8366e6f893985518d. This commit was preventing startup of containers using lxc hooks and shutdown of all other containers, requiring the use of a good old kill -9 to get rid of lxc-start after a container shutdown. Signed-off-by: Stéphane Graber --- src/lxc/start.c | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/src/lxc/start.c b/src/lxc/start.c index a58737a4f..aefccd650 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -198,7 +198,6 @@ static int setup_signal_fd(sigset_t *oldmask) sigdelset(&mask, SIGILL) || sigdelset(&mask, SIGSEGV) || sigdelset(&mask, SIGBUS) || - sigdelset(&mask, SIGCHLD) || sigprocmask(SIG_BLOCK, &mask, oldmask)) { SYSERROR("failed to set signal mask"); return -1; @@ -740,29 +739,10 @@ int save_phys_nics(struct lxc_conf *conf) return 0; } -static void sigchild_handler(int sig) -{ - int status; - pid_t child; - - child = wait(&status); - if (child < 0) { - SYSERROR("SIGCHLD caught but wait() failed: %m\n"); - return; - } - - if (WIFSIGNALED(status)) - ERROR("Process in the new namespace died before execve()" - " due to signal: %i", WTERMSIG(status)); - else if (WIFEXITED(status)) - ERROR("Process in the new namespace died before execve()" - " with exit code: %i", WIFEXITED(status)); -} int lxc_spawn(struct lxc_handler *handler) { int failed_before_rename = 0; - struct sigaction act; const char *name = handler->name; if (lxc_sync_init(handler)) @@ -813,14 +793,6 @@ int lxc_spawn(struct lxc_handler *handler) goto out_delete_net; } - /* - * Install a SIGCHLD handler to detect the death of the new child between - * clone() and execve(). - */ - memset(&act, 0, sizeof(act)); - act.sa_handler = sigchild_handler; - sigaction(SIGCHLD, &act, NULL); - /* Create a process in a new set of namespaces */ handler->pid = lxc_clone(do_start, handler, handler->clone_flags); if (handler->pid < 0) {