From: "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Daniel Lezcano <dlezcano-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
Cc: Linux Containers <containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>
Subject: Re: pidns : PR_SET_PDEATHSIG + SIGKILL regression
Date: Fri, 2 Oct 2009 10:47:02 -0500 [thread overview]
Message-ID: <20091002154702.GB26864@us.ibm.com> (raw)
In-Reply-To: <4AC608BE.9020805-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
Thanks, Daniel, great testcase.
Suka, Pavel, the problem is because send_signal() only calls a
signal from_ancestor_ns if is_si_special(info), while reparent_thread()
sends SEND_SIG_NOINFO.
Why is the '!is_si_special(info)' check there for from_ancestor_ns()?
-serge
Quoting Daniel Lezcano (dlezcano-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org):
> Hi,
>
> I noticed a changed behaviour with the PR_SET_PDEATHSIG and SIGKILL
> between different kernel versions.
>
> With a kernel 2.6.27.21-78.2.41.fc9.x86_64, the SIGKILL signal is
> delivered to the child process when the parent dies but with a 2.6.31
> kernel version that don't happen.
>
> The program below shows the problem. I remember there was were some
> modifications about not killing the init process of the container from
> inside, but in this case, that happens _conceptually_ from outside.
> Keeping this feature is very important to be able to wipe out the
> container when the parent process of the container dies.
>
> #include <stdio.h>
> #include <unistd.h>
> #include <stdlib.h>
> #include <sys/prctl.h>
> #include <sys/param.h>
> #include <sys/poll.h>
> #include <signal.h>
> #include <sched.h>
>
> #ifndef CLONE_NEWPID
> # define CLONE_NEWPID 0x20000000
> #endif
>
> int child(void *arg)
> {
> if (prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0)) {
> perror("prctl");
> return -1;
> }
>
> sleep(3);
> printf("I should have gone with my parent\n");
> return -1;
> }
>
> pid_t clonens(int (*fn)(void *), void *arg, int flags)
> {
> long stack_size = sysconf(_SC_PAGESIZE);
> void *stack = alloca(stack_size) + stack_size;
> return clone(fn, stack, flags | SIGCHLD, arg);
> }
>
> int main(int argc, char *argv[])
> {
> pid_t pid;
>
> pid = clonens(child, NULL, CLONE_NEWNS|CLONE_NEWPID);
> if (pid < 0) {
> perror("clone");
> return -1;
> }
>
> /* let the child to be ready, ugly but simple code */
> sleep(1);
>
> return 0;
> }
>
> _______________________________________________
> Containers mailing list
> Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
> https://lists.linux-foundation.org/mailman/listinfo/containers
next prev parent reply other threads:[~2009-10-02 15:47 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-02 14:05 pidns : PR_SET_PDEATHSIG + SIGKILL regression Daniel Lezcano
[not found] ` <4AC608BE.9020805-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2009-10-02 15:47 ` Serge E. Hallyn [this message]
[not found] ` <20091002154702.GB26864-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-03 0:39 ` Sukadev Bhattiprolu
[not found] ` <20091003003929.GA20034-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-03 2:52 ` Oleg Nesterov
2009-10-03 17:10 ` Sukadev Bhattiprolu
[not found] ` <20091003171029.GA30442-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-04 2:18 ` [PATCH 0/4] Was: " Oleg Nesterov
[not found] ` <20091004021844.GA21006-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-04 2:19 ` [PATCH 1/4] signals: SEND_SIG_NOINFO should be considered as SI_FROMUSER() Oleg Nesterov
[not found] ` <20091004021918.GB21006-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-04 2:25 ` Oleg Nesterov
2009-10-05 17:58 ` Sukadev Bhattiprolu
[not found] ` <20091005175855.GB30442-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-05 18:39 ` Oleg Nesterov
2009-10-06 0:09 ` Sukadev Bhattiprolu
2009-10-06 7:31 ` Roland McGrath
[not found] ` <20091006073100.4184128-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
2009-10-06 13:37 ` Oleg Nesterov
[not found] ` <20091006133732.GB8628-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-06 17:57 ` Roland McGrath
[not found] ` <20091006175705.6547A22-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
2009-10-07 11:30 ` Oleg Nesterov
[not found] ` <20091007113049.GA3421-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-08 1:57 ` Roland McGrath
2009-10-04 2:19 ` [PATCH 2/4] signals: send_signal: use si_fromuser() to detect from_ancestor_ns Oleg Nesterov
[not found] ` <20091004021954.GC21006-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-05 18:12 ` Sukadev Bhattiprolu
[not found] ` <20091005181255.GE30442-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-05 18:25 ` Oleg Nesterov
[not found] ` <20091005182536.GA943-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-05 19:37 ` Sukadev Bhattiprolu
[not found] ` <20091005193738.GF30442-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-05 19:44 ` Oleg Nesterov
[not found] ` <20091005194415.GA4560-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-05 19:55 ` Oleg Nesterov
2009-10-06 0:06 ` Sukadev Bhattiprolu
[not found] ` <20091006000631.GA4390-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-06 1:09 ` Oleg Nesterov
[not found] ` <20091006010956.GA28233-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-06 2:34 ` Sukadev Bhattiprolu
[not found] ` <20091006023401.GA10132-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-06 13:18 ` Oleg Nesterov
[not found] ` <20091006131821.GA8628-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-06 18:01 ` Roland McGrath
2009-10-06 0:16 ` Sukadev Bhattiprolu
2009-10-04 2:20 ` [PATCH 3/4] signals: cosmetic, collect_signal: use SI_USER Oleg Nesterov
[not found] ` <20091004022021.GD21006-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-05 18:03 ` Sukadev Bhattiprolu
2009-10-04 2:20 ` [PATCH 4/4] signals: kill force_sig_specific() Oleg Nesterov
[not found] ` <20091004022050.GE21006-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-05 18:04 ` Sukadev Bhattiprolu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091002154702.GB26864@us.ibm.com \
--to=serue-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=dlezcano-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox