[PATCH] Cygwin: pty: Make system_printf() work after closing pty slave.

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] Cygwin: pty: Make system_printf() work after closing pty slave.

cygwin-patches mailing list
- Current pty cannot show system_printf() output after closing pty
  slave. This patch fixes the issue.
---
 winsup/cygwin/fhandler_tty.cc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index 5a1bcd3ce..02b78cd2c 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -948,6 +948,10 @@ fhandler_pty_slave::open (int flags, mode_t)
       init_console_handler (true);
     }
 
+  get_ttyp ()->pcon_pid = 0;
+  get_ttyp ()->switch_to_pcon_in = false;
+  get_ttyp ()->switch_to_pcon_out = false;
+
   set_open_status ();
   return 1;
 
@@ -1008,6 +1012,7 @@ fhandler_pty_slave::close ()
     termios_printf ("CloseHandle (output_mutex<%p>), %E", output_mutex);
   if (pcon_attached_to == get_minor ())
     get_ttyp ()->num_pcon_attached_slaves --;
+  set_switch_to_pcon (2); /* Make system_printf() work after close. */
   return 0;
 }
 
--
2.21.0

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Cygwin: pty: Make system_printf() work after closing pty slave.

Corinna Vinschen-2
On May 19 20:35, Takashi Yano via Cygwin-patches wrote:

> - Current pty cannot show system_printf() output after closing pty
>   slave. This patch fixes the issue.
> ---
>  winsup/cygwin/fhandler_tty.cc | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
> index 5a1bcd3ce..02b78cd2c 100644
> --- a/winsup/cygwin/fhandler_tty.cc
> +++ b/winsup/cygwin/fhandler_tty.cc
> @@ -948,6 +948,10 @@ fhandler_pty_slave::open (int flags, mode_t)
>        init_console_handler (true);
>      }
>  
> +  get_ttyp ()->pcon_pid = 0;
> +  get_ttyp ()->switch_to_pcon_in = false;
> +  get_ttyp ()->switch_to_pcon_out = false;
> +
>    set_open_status ();
>    return 1;
>  
> @@ -1008,6 +1012,7 @@ fhandler_pty_slave::close ()
>      termios_printf ("CloseHandle (output_mutex<%p>), %E", output_mutex);
>    if (pcon_attached_to == get_minor ())
>      get_ttyp ()->num_pcon_attached_slaves --;
> +  set_switch_to_pcon (2); /* Make system_printf() work after close. */
>    return 0;
>  }
>  
> --
> 2.21.0

Pushed.


Thanks,
Corinna

--
Corinna Vinschen
Cygwin Maintainer
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Cygwin: pty: Make system_printf() work after closing pty slave.

cygwin-patches mailing list
In reply to this post by cygwin-patches mailing list
Hi Takashi,

On 5/19/2020 7:35 AM, Takashi Yano via Cygwin-patches wrote:
> - Current pty cannot show system_printf() output after closing pty
>    slave. This patch fixes the issue.

Sorry to be returning the favor so soon, but this patch causes 'make check' in
the texinfo source tree to hang.  I don't have time at the moment to try to
produce a simple test case, so here's a complicated way to reproduce the problem:

1. Clone the texinfo git repo:

   $ git clone https://git.savannah.gnu.org/git/texinfo.git

2. Build texinfo:

   $ cd texinfo
   $ ./autogen.sh && ./configure # Maybe CFLAGS='-g -O0' for debugging
   $ make

3. Test the standalone info reader:

   $ cd info
   $ make check

It hangs while running the test t/malformed-split.sh, leaving a ginfo process
and a pseudotty process running, with ginfo trying to close a pty slave.

Note that this test uses both ptys and fifos, so there's always a chance that
this is another fifo bug.  But reverting your patch fixes the problem, so I
think it's probably a pty bug.

Ken
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Cygwin: pty: Make system_printf() work after closing pty slave.

cygwin-patches mailing list
On Tue, 19 May 2020 15:04:24 -0400
Ken Brown via Cygwin-patches <[hidden email]> wrote:

> Hi Takashi,
>
> On 5/19/2020 7:35 AM, Takashi Yano via Cygwin-patches wrote:
> > - Current pty cannot show system_printf() output after closing pty
> >    slave. This patch fixes the issue.
>
> Sorry to be returning the favor so soon, but this patch causes 'make check' in
> the texinfo source tree to hang.  I don't have time at the moment to try to
> produce a simple test case, so here's a complicated way to reproduce the problem:
>
> 1. Clone the texinfo git repo:
>
>    $ git clone https://git.savannah.gnu.org/git/texinfo.git
>
> 2. Build texinfo:
>
>    $ cd texinfo
>    $ ./autogen.sh && ./configure # Maybe CFLAGS='-g -O0' for debugging
>    $ make
>
> 3. Test the standalone info reader:
>
>    $ cd info
>    $ make check
>
> It hangs while running the test t/malformed-split.sh, leaving a ginfo process
> and a pseudotty process running, with ginfo trying to close a pty slave.
>
> Note that this test uses both ptys and fifos, so there's always a chance that
> this is another fifo bug.  But reverting your patch fixes the problem, so I
> think it's probably a pty bug.

Sorry for inconvenience. I can reproduce your problem.
I will check what is happening. Please wait a while.

--
Takashi Yano <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Cygwin: pty: Make system_printf() work after closing pty slave.

cygwin-patches mailing list
On Wed, 20 May 2020 17:46:11 +0900
Takashi Yano via Cygwin-patches <[hidden email]> wrote:

> On Tue, 19 May 2020 15:04:24 -0400
> Ken Brown via Cygwin-patches <[hidden email]> wrote:
> > Hi Takashi,
> >
> > On 5/19/2020 7:35 AM, Takashi Yano via Cygwin-patches wrote:
> > > - Current pty cannot show system_printf() output after closing pty
> > >    slave. This patch fixes the issue.
> >
> > Sorry to be returning the favor so soon, but this patch causes 'make check' in
> > the texinfo source tree to hang.  I don't have time at the moment to try to
> > produce a simple test case, so here's a complicated way to reproduce the problem:
> >
> > 1. Clone the texinfo git repo:
> >
> >    $ git clone https://git.savannah.gnu.org/git/texinfo.git
> >
> > 2. Build texinfo:
> >
> >    $ cd texinfo
> >    $ ./autogen.sh && ./configure # Maybe CFLAGS='-g -O0' for debugging
> >    $ make
> >
> > 3. Test the standalone info reader:
> >
> >    $ cd info
> >    $ make check
> >
> > It hangs while running the test t/malformed-split.sh, leaving a ginfo process
> > and a pseudotty process running, with ginfo trying to close a pty slave.
> >
> > Note that this test uses both ptys and fifos, so there's always a chance that
> > this is another fifo bug.  But reverting your patch fixes the problem, so I
> > think it's probably a pty bug.
>
> Sorry for inconvenience. I can reproduce your problem.
> I will check what is happening. Please wait a while.

I found the cause. If pty master is closed, wait_pcon_fwd()
stucks because pty_master_fwd_thread is not running.

I will submit a patch to fix this issue soon.

--
Takashi Yano <[hidden email]>