[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#291357: A Better Example



It appears the example I gave happens on a working
kernel as well.  This one doesn't:

        rstuart@ras:~$ 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
        
        rstuart@titan:~$ ps -fu $LOGNAME
        UID        PID  PPID  C STIME TTY          TIME CMD
        rstuart  15870 15868  0 23:33 ?        00:00:00 sshd: rstuart@pts/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
        rstuart@titan:~$ (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.
        rstuart@ras:~$ 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
        
        rstuart@titan:~$ 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: rstuart@pts/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
        rstuart@titan:~$

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.






Reply to: