Merged into v23-rc1. Thanks, Oren. On 12/10/2010 10:33 PM, Sukadev Bhattiprolu wrote: > Oren, > > As discussed (a while ago) > > https://lists.linux-foundation.org/pipermail/containers/2010-November/025905.html > > here is a patch. I will send a follow-on user-cr patch to mark > the task detached in user-space. > > --- > > From: Sukadev Bhattiprolu <sukadev@xxxxxxxxxxxxxxxxxx> > Date: Fri, 10 Dec 2010 18:37:17 -0800 > Subject: [PATCH 1/1] Ghost tasks must not be detached in kernel > > Ghost tasks are "temporary" tasks created during sys_restart() to > restore "orphaned" sessions/process groups (i.e. those in which the > original session/pgrp leader had exited before checkpoint but other > processes exist in that session/pgrp). > > We only create the ghost task so we have a valid session/pgrp that > the other processes in the session/pgrp can use. Once those other > processes are created, the ghost tasks must silently vanish (without > sending another SIGCHLD). > > do_ghost_task() was setting the exit_signal to -1 so the ghosts don't > send a signal. But rather than set the ->exit_signal here, the caller > (i.e user-space) can create the ghost task by explicitly setting the > CSIGNAL mask to 0xFF. i.e it is not something the we need to do in the > kernel. > > The downside of marking the task detached in do_ghost_task() is that > with current/older kernels container-init does not wait for detached > tasks. See: > > http://lkml.org/lkml/2010/6/16/272 > http://lkml.org/lkml/2010/7/12/213 > > This can lead to a kernel crash if the container-init pre-deceases a > ghost task. > > Signed-off-by: Sukadev Bhattiprolu (sukadev@xxxxxxxxxx) > --- > kernel/checkpoint/restart.c | 1 - > 1 files changed, 0 insertions(+), 1 deletions(-) > > diff --git a/kernel/checkpoint/restart.c b/kernel/checkpoint/restart.c > index 17270b8..2bb7197 100644 > --- a/kernel/checkpoint/restart.c > +++ b/kernel/checkpoint/restart.c > @@ -972,7 +972,6 @@ static int do_ghost_task(void) > if (ret < 0) > ckpt_err(ctx, ret, "ghost restart failed\n"); > > - current->exit_signal = -1; > restore_debug_exit(ctx); > ckpt_ctx_put(ctx); > do_exit(0); _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers