4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-15 21:49:22 +08:00
Takashi Yano 49018bf577 Cygwin: pty: Avoid client deadlock when pty master stops to read.
Previsouly, the following commands hangs:
  mintty -e timeout 1 dash -c 'yes aaaaaaaaaaaaaaaaaaaaaaaaa | cat'

The mechanism is as follows.

When the child process (timeout) is terminated, mintty seems to stop
reading pty master even if yes or cat still alive.

If the the pipe used to transfer output from pty slave to pty master
is full due to lack of master reader, WriteFile() to the pipe is
blocked. WriteFile() cannot be canceled by cygwin signal, therefore,
pty slave hangs.

This patch avoids hanging by checking pipe space before calling
WriteFile() and prevents writing data more than space.

Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256178.html
Reported-by: jojelino <jojelino@gmail.com>
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
2024-07-01 17:46:01 +09:00

22 lines
883 B
Groff

Fixes:
------
- Fix regression in 3.5.3 which fails to open files for stat(2) if the
file is opened exclusively by another process.
Addresses: https://cygwin.com/pipermail/cygwin/2024-April/255811.html
- Fix regression introduced in 3.5.0 when reading surrogate pairs (i.e.,
unicode chars >= 0x10000) from the DOS command line. Addresses:
https://cygwin.com/pipermail/cygwin/2024-April/255807.html
- Fix regression of pthread::once() introduced in 3.5.0 (i.e., the race
issue regarding destroying mutex).
Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255987.html
- Fix a problem that ldd command against cygwin DLLs sometimes hangs.
Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255991.html
- Fix a problem that pty slave hangs on writing when pty master stops
to read.
Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256178.html