* xterm loses data (pty regression)
@ 2009-08-10 15:29 Artur Skawina
2009-08-10 17:07 ` Ray Lee
0 siblings, 1 reply; 7+ messages in thread
From: Artur Skawina @ 2009-08-10 15:29 UTC (permalink / raw)
To: LKML
[I have now gone back to 2.6.30.3 and the writes to the ptys do block there,
so it's a recent regression.]
First noticed it after upgrading to v2.6.31-rc5-246-g90bc1a6, still happens
in rc5-381-g7b2aa03.
If i press ^S in an xterm the output stops as expected, but after a ^Q i see
only the newly written data, everything in between is lost. Like:
> for i in `seq 1 111`; do echo $i; sleep 1; done
1
2
3
4
9
10
11
12
13
^C
[typed ^S after '4', then ^Q after a few seconds]
If the command doing the printing exits before the ^Q is sent, i don't get
any reaction to the ^Q at all, which is why i initially thought it to be an
xserver bug.
Text consoles are unaffected, output resumes as it should.
artur
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: xterm loses data (pty regression) 2009-08-10 15:29 xterm loses data (pty regression) Artur Skawina @ 2009-08-10 17:07 ` Ray Lee 2009-08-10 17:18 ` Linus Torvalds 0 siblings, 1 reply; 7+ messages in thread From: Ray Lee @ 2009-08-10 17:07 UTC (permalink / raw) To: Artur Skawina, Linus Torvalds, Alan Cox, Rafael J. Wysocki; +Cc: LKML [ adding CC:s ] On Mon, Aug 10, 2009 at 8:29 AM, Artur Skawina <art.08.09@gmail.com> wrote: > > [I have now gone back to 2.6.30.3 and the writes to the ptys do block there, > so it's a recent regression.] > > First noticed it after upgrading to v2.6.31-rc5-246-g90bc1a6, still happens > in rc5-381-g7b2aa03. > If i press ^S in an xterm the output stops as expected, but after a ^Q i see > only the newly written data, everything in between is lost. Like: > > > for i in `seq 1 111`; do echo $i; sleep 1; done > 1 > 2 > 3 > 4 > 9 > 10 > 11 > 12 > 13 > ^C > > [typed ^S after '4', then ^Q after a few seconds] > > If the command doing the printing exits before the ^Q is sent, i don't get > any reaction to the ^Q at all, which is why i initially thought it to be an > xserver bug. > Text consoles are unaffected, output resumes as it should. > > artur ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: xterm loses data (pty regression) 2009-08-10 17:07 ` Ray Lee @ 2009-08-10 17:18 ` Linus Torvalds 2009-08-10 17:27 ` Alan Cox 2009-08-10 18:07 ` Linus Torvalds 0 siblings, 2 replies; 7+ messages in thread From: Linus Torvalds @ 2009-08-10 17:18 UTC (permalink / raw) To: Ray Lee; +Cc: Artur Skawina, Alan Cox, Rafael J. Wysocki, LKML On Mon, 10 Aug 2009, Ray Lee wrote: > On Mon, Aug 10, 2009 at 8:29 AM, Artur Skawina <art.08.09@gmail.com> wrote: > > > > First noticed it after upgrading to v2.6.31-rc5-246-g90bc1a6, still happens > > in rc5-381-g7b2aa03. > > If i press ^S in an xterm the output stops as expected, but after a ^Q i see > > only the newly written data, everything in between is lost. Yup, I can confirm that. > > > for i in `seq 1 111`; do echo $i; sleep 1; done (Do ^S/^Q, see data loss) Will take a look asap, thanks. Although I bet it's the same old commit (d945cb9cc: "pty: Rework the pty layer to use the normal buffering logic") again. Linus ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: xterm loses data (pty regression) 2009-08-10 17:18 ` Linus Torvalds @ 2009-08-10 17:27 ` Alan Cox 2009-08-10 18:07 ` Linus Torvalds 1 sibling, 0 replies; 7+ messages in thread From: Alan Cox @ 2009-08-10 17:27 UTC (permalink / raw) To: Linus Torvalds; +Cc: Ray Lee, Artur Skawina, Rafael J. Wysocki, LKML On Mon, 10 Aug 2009 10:18:41 -0700 (PDT) Linus Torvalds <torvalds@linux-foundation.org> wrote: > > > On Mon, 10 Aug 2009, Ray Lee wrote: > > On Mon, Aug 10, 2009 at 8:29 AM, Artur Skawina <art.08.09@gmail.com> wrote: > > > > > > First noticed it after upgrading to v2.6.31-rc5-246-g90bc1a6, still happens > > > in rc5-381-g7b2aa03. > > > If i press ^S in an xterm the output stops as expected, but after a ^Q i see > > > only the newly written data, everything in between is lost. > > Yup, I can confirm that. > > > > > for i in `seq 1 111`; do echo $i; sleep 1; done > > (Do ^S/^Q, see data loss) > > Will take a look asap, thanks. Although I bet it's the same old commit > (d945cb9cc: "pty: Rework the pty layer to use the normal buffering logic") > again. My guess too. The old pty code abuses throttle/unthrottle in odd ways. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: xterm loses data (pty regression) 2009-08-10 17:18 ` Linus Torvalds 2009-08-10 17:27 ` Alan Cox @ 2009-08-10 18:07 ` Linus Torvalds 2009-08-10 19:08 ` Artur Skawina 1 sibling, 1 reply; 7+ messages in thread From: Linus Torvalds @ 2009-08-10 18:07 UTC (permalink / raw) To: Ray Lee; +Cc: Artur Skawina, Alan Cox, Rafael J. Wysocki, LKML On Mon, 10 Aug 2009, Linus Torvalds wrote: > > On Mon, 10 Aug 2009, Ray Lee wrote: > > On Mon, Aug 10, 2009 at 8:29 AM, Artur Skawina <art.08.09@gmail.com> wrote: > > > > > > First noticed it after upgrading to v2.6.31-rc5-246-g90bc1a6, still happens > > > in rc5-381-g7b2aa03. > > > If i press ^S in an xterm the output stops as expected, but after a ^Q i see > > > only the newly written data, everything in between is lost. > > Yup, I can confirm that. > > > > > for i in `seq 1 111`; do echo $i; sleep 1; done > > (Do ^S/^Q, see data loss) > > Will take a look asap, thanks. Although I bet it's the same old commit > (d945cb9cc: "pty: Rework the pty layer to use the normal buffering logic") > again. I think it's really this trivial. That pty commit removed the checking for tty->stopped in pty_write_buffer() for no clear reason. And when it did that, it broke all the pausing logic in drivers/char/n_tty.c. Can you confirm? Linus --- drivers/char/pty.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/char/pty.c b/drivers/char/pty.c index 6e6942c..d083c73 100644 --- a/drivers/char/pty.c +++ b/drivers/char/pty.c @@ -144,6 +144,8 @@ static int pty_write(struct tty_struct *tty, const unsigned char *buf, static int pty_write_room(struct tty_struct *tty) { + if (tty->stopped) + return 0; return pty_space(tty->link); } ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: xterm loses data (pty regression) 2009-08-10 18:07 ` Linus Torvalds @ 2009-08-10 19:08 ` Artur Skawina 2009-08-10 23:12 ` Artur Skawina 0 siblings, 1 reply; 7+ messages in thread From: Artur Skawina @ 2009-08-10 19:08 UTC (permalink / raw) To: Linus Torvalds; +Cc: Ray Lee, Alan Cox, Rafael J. Wysocki, LKML Linus Torvalds wrote: > >> (Do ^S/^Q, see data loss) > I think it's really this trivial. > > That pty commit removed the checking for tty->stopped in > pty_write_buffer() for no clear reason. And when it did that, it broke all > the pausing logic in drivers/char/n_tty.c. > > Can you confirm? > static int pty_write_room(struct tty_struct *tty) > { > + if (tty->stopped) > + return 0; > return pty_space(tty->link); > } w/ this, the pty writes now block again after ^Q, and the data loss is gone. Thanks, artur ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: xterm loses data (pty regression) 2009-08-10 19:08 ` Artur Skawina @ 2009-08-10 23:12 ` Artur Skawina 0 siblings, 0 replies; 7+ messages in thread From: Artur Skawina @ 2009-08-10 23:12 UTC (permalink / raw) To: Linus Torvalds; +Cc: Ray Lee, Alan Cox, Rafael J. Wysocki, LKML Artur Skawina wrote: >Linus Torvalds wrote: >> >> static int pty_write_room(struct tty_struct *tty) >> { >> + if (tty->stopped) >> + return 0; >> return pty_space(tty->link); >> } > > w/ this, the pty writes now block again after ^Q, and the data loss is gone. What i meant was "...pty writes now block again after ^S...", sorry. artur ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-08-10 23:13 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-08-10 15:29 xterm loses data (pty regression) Artur Skawina 2009-08-10 17:07 ` Ray Lee 2009-08-10 17:18 ` Linus Torvalds 2009-08-10 17:27 ` Alan Cox 2009-08-10 18:07 ` Linus Torvalds 2009-08-10 19:08 ` Artur Skawina 2009-08-10 23:12 ` Artur Skawina
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox