This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mintty: Ctrl-Q does not work?

On 25 September 2012 14:32, Ryan Johnson wrote:
> On 25/09/2012 6:05 AM, Helmut Karlowski wrote:
>> I type
>> cat [some long ascii-file]
>> then Ctrl-S (output stops), then Ctrl-Q (terminal hangs, can only be
>> terminated by closing the window).
>> Using minty 1.1.2 and  1.7.16(0.262/5/3) 2012-07-20 22:55 i686 Cygwin
>> Can anybody reproduce this?
> Confirmed with mintty 1.1.1 and the same version of cygwin (w7-64). FWIW,
> doing it with `find .' rather than `cat' works fine.

The issue isn't specific to any of mintty, cat or Ctrl+S; for example,
I've managed to reproduce it with xterm, hexdump, and just hitting
Enter. Any other key that sends a keycode will do too. Ctrl+Q isn't
needed for the freeze to happen. In xterm I've even managed it with
find, by hitting Enter repeatedly.

If you then look at the situation in ps, you'll see something like this:

O    3396       1    3396       1472  ?       1004 05:11:07 /usr/bin/xterm
O    3528    4460    3528        528  pty3    1004 05:25:01 /usr/bin/cat

The interesting bit there is the two 'O's in the first column, which
means both processes are waiting to output. I think what's happening
is that both of them are trying to write to their side of the
underlying pty device, but that those writes are blocking until data
is read from the other side of the pty. Result: deadlock. If the cat
is killed (possibly with -9, because of its nine lives), the terminal
happily continues on its way.

So why doesn't this happen more often? Not sure. The speed difference
between the client process output and the terminal seems to play a
role here. I can only guess that the issue occurs if a buffer in the
pty's slave->master pipe overflows and something is written to the
master->slave pipe at the same time (which is unbuffered?).

I don't understand the pty implementation enough to verify any of
that, so cgf would need to comment further. Note besides: I couldn't
make this deadlock happen on Ubuntu.


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]