lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20081229155735.GA6906@redhat.com>
Date:	Mon, 29 Dec 2008 16:57:35 +0100
From:	Oleg Nesterov <oleg@...hat.com>
To:	Scott James Remnant <scott@...onical.com>
Cc:	Roland McGrath <roland@...hat.com>,
	lkml <linux-kernel@...r.kernel.org>,
	Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [RFC][PATCH] Notify init when processes are reparented to it

On 12/29, Scott James Remnant wrote:
>
> On Mon, 2008-12-29 at 14:23 +0100, Oleg Nesterov wrote:
>
> > > We want to be able to supervise daemons.
> >
> > What do you mean?
> >
> > > Later on, 1002 will die and init will receive SIGCHLD for it.
> > >
> > > Unfortunately neither the 1001 or 1002 processes are known to init, even
> > > though they are original children of the process it spawned (1000), for
> > > init to be notified about them - this has been forgotten.
> >
> > Ok, with this patch /sbin/init knows that 1002 is a descendant
> > of apache(1000) which was spwaned by init. What can init do
> > with this info?
> >
> Fundamentally init would now know that the apache service terminated,
> and with what exit code or by what signal.
>
> Right now, all we know is that a process terminated (and why) - we can't
> link that back to a service in any kind of foolproof manner.
>
> With the ability to do that, when the apache service dies, we can log
> that in a more useful manner (including marking the service as down) -
> but most importantly, we can respawn it!

Aha, thanks, I suspected something like this.

But how can we know (in general) that the service has died? We only
know that the process has exited.

IOW. when apache(1001) exits, we don't respawn. How can init know that
the death of apache(1002) means "this is the real exit of service, the
previous exits were due to initialization stage".

The only answer I can see is: because init can figure out that all
descendants of initially spawned apache(1000) have exited. But this
doesn't look very flexible/reliable to me.

And we already have CONFIG_PROC_EVENTS, init can monitor PROC_EVENT_FORK
events, so it can do this without ->adopt_signal ?

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ