Commit 23154d57 by Stéphane Graber

Revert "start: Detect early failure of the new child"

This reverts commit 5a5c35c3. 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: 's avatarStéphane Graber <stgraber@ubuntu.com>
parent 3763ee85
...@@ -198,7 +198,6 @@ static int setup_signal_fd(sigset_t *oldmask) ...@@ -198,7 +198,6 @@ static int setup_signal_fd(sigset_t *oldmask)
sigdelset(&mask, SIGILL) || sigdelset(&mask, SIGILL) ||
sigdelset(&mask, SIGSEGV) || sigdelset(&mask, SIGSEGV) ||
sigdelset(&mask, SIGBUS) || sigdelset(&mask, SIGBUS) ||
sigdelset(&mask, SIGCHLD) ||
sigprocmask(SIG_BLOCK, &mask, oldmask)) { sigprocmask(SIG_BLOCK, &mask, oldmask)) {
SYSERROR("failed to set signal mask"); SYSERROR("failed to set signal mask");
return -1; return -1;
...@@ -740,29 +739,10 @@ int save_phys_nics(struct lxc_conf *conf) ...@@ -740,29 +739,10 @@ int save_phys_nics(struct lxc_conf *conf)
return 0; 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 lxc_spawn(struct lxc_handler *handler)
{ {
int failed_before_rename = 0; int failed_before_rename = 0;
struct sigaction act;
const char *name = handler->name; const char *name = handler->name;
if (lxc_sync_init(handler)) if (lxc_sync_init(handler))
...@@ -813,14 +793,6 @@ int lxc_spawn(struct lxc_handler *handler) ...@@ -813,14 +793,6 @@ int lxc_spawn(struct lxc_handler *handler)
goto out_delete_net; 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 */ /* Create a process in a new set of namespaces */
handler->pid = lxc_clone(do_start, handler, handler->clone_flags); handler->pid = lxc_clone(do_start, handler, handler->clone_flags);
if (handler->pid < 0) { if (handler->pid < 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment