All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
To: Bastian Blank <bastian@waldi.eu.org>,
	oleg@redhat.com, ebiederm@xmission.com, roland@redhat.com,
	containers@lists.osdl.org, linux-kernel@vger.kernel.org,
	xemul@openvz.org
Subject: Re: [RFC][PATCH 4/5] Protect cinit from fatal signals
Date: Tue, 2 Dec 2008 12:51:30 -0800	[thread overview]
Message-ID: <20081202205130.GB20077@us.ibm.com> (raw)
In-Reply-To: <20081202120606.GD1132@wavehammer.waldi.eu.org>

First of, thanks for taking the time to review/comment.


Bastian Blank [bastian@waldi.eu.org] wrote:
| On Mon, Dec 01, 2008 at 12:21:12PM -0800, Sukadev Bhattiprolu wrote:
| > Container-inits are special in some ways and this change requires SIGKILL
| > to terminate them.
| 
| No. They have are not special from the outside namespace.


I agree that they should not be. But they are special today in at least one
respect - terminating a container-init will terminate all processes in the
container even those that are in unrelated process groups.

Secondly, a poorly written container-inits can take the entire container down,
So we expect that container-inits to handle/ignore all signals rather than
SIG_DFL them. Current global inits do that today and container-inits should
too. It does not look like an unreasonable requirement.
  
If container-inits do not properly handle signals, it is appearing that
we need to make a trade-off in terms of semantics/complexity. See
following URL for the history.

https://lists.linux-foundation.org/pipermail/containers/2008-November/013991.html

So the basic requirements are:

	- container-init receives/processes all signals from ancestor namespace.
	- container-init ignores fatal signals from own namespace.

We are simplifying the first to say that:

	- parent-ns must have a way to terminate container-init
	- cinit will ignore SIG_DFL signals that may terminate cinit even if
	  they come from parent ns

| 
| Also it was discussed to use pid namespaces to preserve the local pid of
| a process during snapshot/restore. This means that every process may get
| the state of a container-init. And then it is not longer a wise idea to
| make them behave different from the outside.

The one change in the state of the process I see is if someone relies on
following fields from /proc/<pid>/status

	SigPnd: 0000000000000000
	ShdPnd: 0000000000000000
	SigBlk: 0000000000000000
	SigIgn: 0000000000000000
	SigCgt: 0000000000000000

to decide if they can send, say SIGUSR1, to terminate the process. If
they do, they maybe in for a surprise. But if the container-init properly
handles/ignores signals, this info will be consistent. 

Yes its not ideal and yes, the semantic change described above is a trade-off.
We are trying to find out if this change is unreasonable or will break
something really bad way.

  reply	other threads:[~2008-12-02 20:51 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-26  3:42 [RFC][PATCH 0/5] Container init signal semantics Sukadev Bhattiprolu
2008-11-26  3:44 ` [RFC][PATCH 1/5] pid: Implement ns_of_pid Sukadev Bhattiprolu
2008-11-26  3:44   ` Sukadev Bhattiprolu
2008-11-27  1:19   ` Bastian Blank
2008-12-01 20:24     ` Sukadev Bhattiprolu
2008-12-02 11:58       ` Bastian Blank
2008-12-02 22:12         ` Sukadev Bhattiprolu
2008-12-03  0:34         ` Valdis.Kletnieks
2008-11-26  3:45 ` [RFC][PATCH 2/5] pid: Generalize task_active_pid_ns Sukadev Bhattiprolu
2008-11-26  3:45   ` Sukadev Bhattiprolu
2008-11-27  1:17   ` Bastian Blank
2008-11-27 21:19     ` Greg Kurz
2008-12-01 21:15       ` Sukadev Bhattiprolu
2008-12-02 11:57         ` Bastian Blank
2008-12-03  7:41           ` Sukadev Bhattiprolu
2008-12-03  7:41             ` Sukadev Bhattiprolu
2008-12-04 12:58             ` Bastian Blank
2008-11-27 13:09   ` Nadia Derbey
2008-12-01 20:38     ` Sukadev Bhattiprolu
2008-11-26  3:46 ` [RFC][PATCH 3/5] Determine if sender is from ancestor ns Sukadev Bhattiprolu
2008-11-26  3:46   ` Sukadev Bhattiprolu
2008-12-02  3:07   ` Roland McGrath
     [not found]   ` <20081126034611.GC23238-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-11-27  1:01     ` Bastian Blank
2008-11-27  1:01       ` Bastian Blank
2008-12-01 20:15       ` Sukadev Bhattiprolu
2008-12-02 11:48         ` Bastian Blank
2008-12-02 19:59           ` Sukadev Bhattiprolu
2008-12-04 12:45             ` [RFC][PATCH 3/5] Determine if sender is from ancestor ns+ Bastian Blank
2008-12-04  1:06     ` [RFC][PATCH 3/5] Determine if sender is from ancestor ns Roland McGrath
2008-12-04  1:06       ` Roland McGrath
2008-12-09  3:22       ` Sukadev Bhattiprolu
2008-11-26  3:46 ` [RFC][PATCH 4/5] Protect cinit from fatal signals Sukadev Bhattiprolu
2008-11-26  3:46   ` Sukadev Bhattiprolu
2008-11-27  1:07   ` Bastian Blank
2008-12-01 20:21     ` Sukadev Bhattiprolu
2008-12-02 12:06       ` Bastian Blank
2008-12-02 20:51         ` Sukadev Bhattiprolu [this message]
2008-12-04 12:52           ` Bastian Blank
2008-12-04 18:58             ` Sukadev Bhattiprolu
2008-11-26  3:46 ` [RFC][PATCH 5/5] Clear si_pid for signal from ancestor ns Sukadev Bhattiprolu
2008-11-26  3:46   ` 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=20081202205130.GB20077@us.ibm.com \
    --to=sukadev@linux.vnet.ibm.com \
    --cc=bastian@waldi.eu.org \
    --cc=containers@lists.osdl.org \
    --cc=ebiederm@xmission.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oleg@redhat.com \
    --cc=roland@redhat.com \
    --cc=xemul@openvz.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.