[lxc-devel] [PATCH 2/2] Revert "start: Detect early failure of the new child"

Stéphane Graber stgraber at ubuntu.com
Thu Apr 18 08:32:29 UTC 2013


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 <stgraber at ubuntu.com>
---
 src/lxc/start.c | 28 ----------------------------
 1 file changed, 28 deletions(-)

diff --git a/src/lxc/start.c b/src/lxc/start.c
index a58737a..aefccd6 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) {
-- 
1.8.1.2





More information about the lxc-devel mailing list