problem with start-stop-daemon and --exec

Ed W lists at wildgooses.com
Mon Mar 5 15:25:07 UTC 2012


Hi

> I checked various start-stop-daemon manpages on the net and they
> seem to all specify checking /proc/pid/exe instead.

That's quite possible, but just to be clear, what I observe with at 
least the gentoo one is that
-IFF you specify --exec AND --pid-file, then it relaxes the exec test 
and does a substring search.

So this appears to allow me to to use a substring match in --exec - 
which I think with a bit of thought, actually makes a lot of sense in 
the event that we have a pid.  I don't see that this is likely to cause 
problems with regards to compatibility with other s-s-d implementations, 
it's already a fairly tight "and" test.

>
> But there is a reason why we check /proc/pid/cmdline instead.
> On systems with bbox, a lot of processes will have
> /proc/pid/exe = "/bin/busybox".
> Which will make e.g.
> start-stop-daemon --stop --exec /bin/ntpd
> fail to stop ntpd if ntpd is a busybox applet.

I examined the code for openrc and I can't find any obvious reference to 
/proc/pid/exe ?  I confess I don't understand the implementation they 
are using, but I think the relevant code is in src/librc/librc-daemon.c 
if someone else could take a closer look?



> I think we need to first check /proc/pid/exe,
> and then check /proc/pid/cmdline as we do now.

Can we please consider simply relaxing the current test to be a 
substring match on /proc/pid/cmdline (only in the case of both --exec 
AND --pidfile)?  This seems to
a) be a small code change and completely compatible with current situation
b) still a very tight test and unlikely to lead to false positives
c) handles common situations where a daemon renames itself


Thanks

Ed W


More information about the busybox mailing list