start-stop-daemon --exec is incorrect on unionfs systems
Hi
Debian Live is a live CD system based on Debian:
http://debian-live.alioth.debian.org/
Debian-live uses a unionfs system. The root filesystem is squashfs.
Let's look at exim4 on such a system. The init.d script seems to
misbehave:
debian:~# cat /var/run/exim4/exim.pid
5399
debian:~# ls -l /proc/5399/exe
lrwxrwxrwx 1 root root 0 2007-09-19 18:34 /proc/5399/exe ->
/cow/usr/sbin/exim4
debian:~# pgrep -l exim4
5399 exim4
debian:~# /etc/init.d/exim4 stop
Stopping MTA:No /usr/sbin/exim4 found running; none killed.
exim4_listener.
debian:~# pgrep -l exim4
5399 exim4
debian:~# /etc/init.d/exim4 restart
Stopping MTA for restart:.
Restarting MTA: exim4.
debian:~# pgrep -l exim4
5399 exim4
5466 exim4
/etc/init.d/exim4 run eventually:
start-stop-daemon --stop --oknodo --pidfile /var/run/exim4/exim.pid --oknodo --retry 30 --exec /usr/sbin/exim4
It has found the PID file. But (from a later invocation of the exim
init.d script):
debian:~# ls -l /proc/5620/exe
lrwxrwxrwx 1 root root 0 2007-09-19 18:45 /proc/5620/exe -> /cow/usr/sbin/exim4
Which means that its executable is not /usr/sbin/exim4 .
start-stop-daemon thinks that this is a new process that happened to get
that same PID later on.
(this is /cow , as I have installed the package on the live system. If
the package was in the squashfs , this would be
/filesystems.squashfs/usr/sbin/exim4 )
What can be done about this?
1. Avoid using --exec . Probably risking some false kills.
2. Ignore the problem, and leave squashfs systems broken.
Any other way out?
--
Tzafrir Cohen
icq#16849755 jabber:tzafrir@jabber.org
+972-50-7952406 mailto:tzafrir.cohen@xorcom.com
http://www.xorcom.com iax:guest@local.xorcom.com/tzafrir
Reply to: