[PATCH v2] Cygwin: pipe: Restore blocking mode of read pipe on close()
Ken Brown
kbrown@cornell.edu
Thu Sep 12 21:35:52 GMT 2024
On 9/6/2024 4:08 AM, Takashi Yano wrote:
> If a cygwin app is executed from a non-cygwin app and the cygwin
> app exits, the read pipe remains in the non-blocking mode because
> of the commit fc691d0246b9. Due to this behaviour, the non-cygwin
> app cannot read the pipe correctly after that. Similarly, if a
> non-cygwin app is executed from a cygwin app and the non-cygwin
> app exits, the read pipe remains in the blocking mode. With this
> patch, the blocking mode of the read pipe is stored into a variable
> was_blocking_read_pipe on set_pipe_non_blocking() when the cygwin
> app starts and restored on close(). In addition, the pipe mode is
> set to non-blocking mode in raw_read() if the mode is blocking
> mode as well.
>
> Addresses: https://github.com/git-for-windows/git/issues/5115
> Fixes: fc691d0246b9 ("Cygwin: pipe: Make sure to set read pipe non-blocking for cygwin apps.");
> Reported-by: isaacag, Johannes Schindelin <Johannes.Schindelin@gmx.de>
> Reviewed-by: Corinna Vinschen <corinna@vinschen.de>
> Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
> ---
> winsup/cygwin/fhandler/pipe.cc | 41 +++++++++++++++++++++++++
> winsup/cygwin/local_includes/fhandler.h | 3 ++
> winsup/cygwin/sigproc.cc | 9 +-----
> 3 files changed, 45 insertions(+), 8 deletions(-)
LGTM, but I haven't tried to test it (except to make sure that the
branch still builds). I assume you've tested it. My only question is
whether you want to mention the variable is_blocking_read_pipe in the
commit message.
Ken
More information about the Cygwin-patches
mailing list