This old kludge code assigns fhandler_console for /dev/tty even if the CTTY is not a console when stat() has been called. Due to this, the problem reported in https://cygwin.com/pipermail/cygwin/2023-June/253888.html occurs after the commit 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.").
This patch fixes the issue by dropping the old kludge code. Though the exact reason why the kludge code was necessary is not clear enough, this kluge code has no longer seemed to be necessary after the commit 6ae28c22639d. This is because even when /dev/tty is not opened, /dev/tty became able to be refered via last_tty_dev, which was introduced by the commit 6ae28c22639d. Fixes: 23771fa1f7028 ("dtable.cc (fh_alloc): Make different decisions when generating fhandler for not-opened devices. Add kludge to deal with opening /dev/tty.") Reported-by: Bruce Jerrick <bmj...@gmail.com> Reviewed-by: Corinna Vinschen <cori...@vinschen.de> Signed-off-by: Takashi Yano <takashi.y...@nifty.ne.jp> --- winsup/cygwin/dtable.cc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 18e0f3097..9427e238e 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -598,12 +598,7 @@ fh_alloc (path_conv& pc) fh = cnew (fhandler_mqueue); break; case FH_TTY: - if (!pc.isopen ()) - { - fhraw = cnew_no_ctor (fhandler_console, -1); - debug_printf ("not called from open for /dev/tty"); - } - else if (!CTTY_IS_VALID (myself->ctty) && last_tty_dev + if (!CTTY_IS_VALID (myself->ctty) && last_tty_dev && !myself->set_ctty (fh_last_tty_dev, 0)) debug_printf ("no /dev/tty assigned"); else if (CTTY_IS_VALID (myself->ctty)) -- 2.39.0