It appears the example I gave happens on a working kernel as well. This one doesn't:
[EMAIL PROTECTED]:~$ ssh 10.7.0.3 Linux titan.brisbane.lube 2.4.27-6-lube-686-smp #1 SMP Thu Jan 13 16:01:29 EST 2005 i686 GNU/Linux [EMAIL PROTECTED]:~$ ps -fu $LOGNAME UID PID PPID C STIME TTY TIME CMD rstuart 15870 15868 0 23:33 ? 00:00:00 sshd: [EMAIL PROTECTED]/0 rstuart 15872 15870 2 23:33 pts/0 00:00:00 -bash rstuart 15895 15872 0 23:33 pts/0 00:00:00 ps -fu rstuart [EMAIL PROTECTED]:~$ (sleep 2; kill -9 15870) & sleep 12345 [1] 15900 Connection to 10.7.0.3 closed by remote host. Connection to 10.7.0.3 closed. [EMAIL PROTECTED]:~$ ssh 10.7.0.3 Linux titan.brisbane.lube 2.4.27-6-lube-686-smp #1 SMP Thu Jan 13 16:01:29 EST 2005 i686 GNU/Linux [EMAIL PROTECTED]:~$ ps -fu $LOGNAME UID PID PPID C STIME TTY TIME CMD rstuart 15872 1 0 23:33 ? 00:00:00 -bash rstuart 15901 15872 0 23:33 ? 00:00:00 sleep 12345 rstuart 15905 15903 0 23:33 ? 00:00:00 sshd: [EMAIL PROTECTED]/2 rstuart 15907 15905 2 23:33 pts/2 00:00:00 -bash rstuart 15932 15907 0 23:33 pts/2 00:00:00 ps -fu rstuart [EMAIL PROTECTED]:~$ Notice the sleep is still running. On a working kernel is isn't because it has been sent a SIGHUP. By the way, it appears the code concerned was copied from 2.6.8, or a 2.6 kernel a least. In 2.6.8, the code looks like this: /* Defer ldisc switch */ /* tty_deferred_ldisc_switch(N_TTY); This should get done automatically when the port closes and tty_release is called */ read_lock(&tasklist_lock); When copied to 2.4.27, the code ended up like this: /* Defer ldisc switch */ /* tty_deferred_ldisc_switch(N_TTY); read_lock(&tasklist_lock); When the trailing */ is restored, the kernel works again. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]