Public bug reported:

I have an Ubuntu LXC host with several containers running internet  
services via xinetd.

Sometimes the container services die without any reason and no logfile
entry.  First, I thought LXC is not that stable as I hoped, but now I
found the bug inside /etc/init.d/xinetd !

The problem is: when I stop xinetd on the host with command
"/etc/init.d/xinetd stop"
this stops all LXC container xinetd processes, too!

/etc/init.d/xinetd contains bad code which does not respect the xinetd
pidfile. See "man start-stop-daemon":

  Note: unless --pidfile is specified, start-stop-daemon behaves similar
  to killall(1).  start-stop-daemon will scan the process table looking
  for any processes which match the process name (...)

The following patch prevents this unwanted behaviour and let the
container's xinetd untouched:


--- /tmp/xinetd 2011-10-05 18:08:13.000000000 +0200      
+++ xinetd      2011-10-05 18:23:19.000000000 +0200
@@ -17,7 +17,7 @@
 DAEMON=/usr/sbin/$NAME
 PIDFILE=/var/run/$NAME.pid

-test -x "$DAEMON" || exit 0
+test -x $DAEMON || exit 0

 test -e /etc/default/$NAME && . /etc/default/$NAME
 case "$INETD_COMPAT" in
@@ -47,18 +47,20 @@
     start)
         checkportmap
         log_daemon_msg "Starting internet superserver" "$NAME"
-        start-stop-daemon --start --quiet --background --exec "$DAEMON" -- \
-            -pidfile "$PIDFILE" $XINETD_OPTS
+        start-stop-daemon --start --pidfile $PIDFILE --quiet --background \
+                          --exec $DAEMON -- -pidfile $PIDFILE $XINETD_OPTS
         log_end_msg $?
         ;;
     stop)
         log_daemon_msg "Stopping internet superserver" "$NAME"
-        start-stop-daemon --stop --signal 3 --quiet --oknodo --exec "$DAEMON"
+        start-stop-daemon --stop --pidfile $PIDFILE --signal 3 --quiet \
+                          --oknodo --exec $DAEMON
         log_end_msg $?
         ;;
     reload)
         log_daemon_msg "Reloading internet superserver configuration" "$NAME"
-        start-stop-daemon --stop --signal 1 --quiet --oknodo --exec "$DAEMON"
+        start-stop-daemon --stop --pidfile $PIDFILE --signal 1 --quiet \
+                          --oknodo --exec $DAEMON
         log_end_msg $?
         ;;
     restart|force-reload)
@@ -66,7 +68,7 @@
         $0 start
         ;;
     status)
-       status_of_proc -p "$PIDFILE" "$DAEMON" xinetd && exit 0 || exit $?
+       status_of_proc -p $PIDFILE $DAEMON xinetd && exit 0 || exit $?
        ;;
     *)
         echo "Usage: /etc/init.d/xinetd 
{start|stop|reload|force-reload|restart|status}"

--
Ullrich Horlacher              Server- und Arbeitsplatzsysteme
Rechenzentrum                  E-Mail: horlac...@rus.uni-stuttgart.de
Universitaet Stuttgart         Tel:    ++49-711-685-65868
Allmandring 30                 Fax:    ++49-711-682357
70550 Stuttgart (Germany)      WWW:    http://www.rus.uni-stuttgart.de/

** Affects: xinetd (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to xinetd in Ubuntu.
https://bugs.launchpad.net/bugs/868538

Title:
   /etc/init.d/xinetd kills LXC container's xinetd

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/xinetd/+bug/868538/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs

Reply via email to