2002-04-08 11:28:00

by Denis Vlasenko

[permalink] [raw]
Subject: 2.4 -> 2.5 breakage (rpciod?)

This is a testcase made from a shutdown script.
Note double ps invocation at the bottom in zz.

Testcase kills all processes nicely on a 2.4 in preparation to umount+reboot.
However on 2.5.7 it shows erratic behavior: killall5 -15 seems to disturb
rpciod for a moment, this shows as "/bin/ps: I/O error" at the first ps after
kill commands. However, after user presses <Enter> second ps executes just
fine.

Without this pause (a few seconds while user hits <Enter>) it is impossible
to continue (e.g. do a reboot): even sleep N won't work ("/bin/sleep: I/O
error"). You can see this while beeper tries to make 1 second pauses.

Additional notes:
* I use simpleinit from util-linux, hence kill -TSTP 1
or else simpleinit will try to spawn new gettys.
* I run an NFS-mounted box. Have to kill dhcpcd first or else
eth0 gets deconfigured with catastrophic results.
* I suspect this bug manifests itself over NFS only.

testcase
========
#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
setsid ./zz </dev/null >/dev/null 2>&1 3>&1 &
while true; do
sleep 32000
done

zz
==
#!/bin/sh
# start annoying beeping sound :-)
./beeper >/dev/console 2>&1 &
echo "* Stop getty spawning" >/dev/console
kill -TSTP 1
echo "* Running processes:" >/dev/console
ps -AH e >/dev/console
echo -n "* Press <Enter>:" >/dev/console; read junk </dev/console
echo " kill: dhcpcd" >/dev/console
killall -KILL dhcpcd 2>/dev/null
sleep 2
echo " term: everybody" >/dev/console
killall5 -15 2>/dev/null # won't work with -TERM
sleep 2
echo " kill: everybody" >/dev/console
killall5 -9 2>/dev/null # won't work with -KILL
sleep 2
echo "* Running processes:" >/dev/console
ps -AH e >/dev/console 2>&1
echo -n "* Press <Enter>:" >/dev/console; read junk </dev/console
echo "* Running processes:" >/dev/console
ps -AH e >/dev/console 2>&1
echo -n "* Press <Enter>:" >/dev/console; read junk </dev/console

beeper
======
#!/bin/sh
while true; do
echo -n " "
sleep 1
done

--
vda