Okay, since the test script used by CHECK_LOCAL_SERVER runs as of -7 but xdm still doesn't start as often as not, I would REALLY GREATLY APPRECIATE IT if this gets into -8.. The idea is simple, if xdm is dying, frequently, you probably will lose console access to your machine---lovely thought, that. What I propose is a little sanity check not on the file, but the state of the xdm itself. Make this the first thing to do in /etc/X11/xdm/Xsetup_0: touch /var/run/xdm.ok I'd make this a configurable name as below if I knew how. Since I do not, I'll let you do it. => And here's a pseudo-patch for /etc/init.d/xdm: ------ line 6: PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/bin/X11/xdm PIDFILE=/var/run/xdm.pid +TESTFILE=/var/run/xdm.ok test -x $DAEMON || exit 0 # comment out the next line if xdm manages no local sessions, or for some # reason does not need a valid /etc/X11/XF86Config file to do so CHECK_LOCAL_XSERVER=1 + +# If CHECK_LOCAL_XSERVER is defined above, this is the number of seconds we +# will wait for xdm to properly be started before assuming it's not going to +# start properly and shutting it down. +MAXTIME=45 case "$1" in start) if [ $CHECK_LOCAL_XSERVER ]; then ------ line 37 (before adding the above): fi fi echo -n "Starting X display manager: xdm" - start-stop-daemon --start --quiet --pid $PIDFILE --exec $DAEMON || echo -n " already running" && \ + start-stop-daemon --start --quiet --pid $PIDFILE --exec $DAEMON \ + || echo -n " already running" \ + && if [ $CHECK_LOCAL_XSERVER ]; then + count=1 + rm /var/run/xdm.ok + while [ ! -r $TESTFILE -a $count -lt $MAXTIME ]; do + sleep 1 + count=`expr $count + 1` + done + if [ ! -r $TESTFILE ]; then + echo -n ' failed to start properly' + fi + fi echo "." ;; Great amounts of thanks to jm_ and dark for their help and #debian in general for putting up with me while I tried to figure out how to do the while loop above.. If you or anyone else spots a bug in the above, feel free to fix it and tell me what I did wrong. => -- Show me the code or get out of my way.
Attachment:
pgpuGIg9xuR2A.pgp
Description: PGP signature