Hangups in n_tty_read()

From: Johannes Weiner
Date: Thu Jul 16 2009 - 14:49:51 EST


Hello Alan,

I regularly get hung terminals when ^Cing a foreground process. The
terminal won't show any sign of input or output anymore then.

Here is an excerpt from sysrq+w:

Jul 16 17:33:10 chigurh kernel: [20907.892444] conf S 0000000000000000 0 10946 10888 0x00000000
Jul 16 17:33:10 chigurh kernel: [20907.892444] ffff88000e1efd58 0000000000000082 ffff88000e1efcc8 ffffffff8103423b
Jul 16 17:33:10 chigurh kernel: [20907.892444] 0000000000004000 0000000000012240 000000000000dc78 ffff880001639240
Jul 16 17:33:10 chigurh kernel: [20907.892444] ffff88000e1efce8 ffff880024688000 ffff88002f8651c0 ffff880024688378
Jul 16 17:33:10 chigurh kernel: [20907.892444] Call Trace:
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff8103423b>] ? try_to_wake_up+0x29e/0x2b0
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff8103423b>] ? try_to_wake_up+0x29e/0x2b0
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff8134f675>] schedule_timeout+0x26/0x190
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff811ea909>] n_tty_read+0x496/0x74d
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff8103424d>] ? default_wake_function+0x0/0xf
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff811e65a5>] tty_read+0x7d/0xba
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff8109a33b>] vfs_read+0xab/0x122
Jul 16 17:33:10 chigurh kernel: [20907.892444] [<ffffffff8109a476>] sys_read+0x47/0x6f

Killing the hung foreground process from another terminal works. But
it won't recover the screwed terminal and the terminal does not show
any reaction to it (like a prompt) even when the process is gone.

I remember one hang without X where the cursor-blinking was still
affected by keyboard input.

Unfortunately, I hadn't had the chance to test if input comes through
by blindly executing something disk heavy and watch the LEDs or
similar, so I can't say for sure if it's just output or if input is
affected as well.

First kernel I noticed this with was something past .30. And it
certainly happens with Linus' latest.

Any idea?

Hannes
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/