[PATCH] Cygwin: pty: Add FreeConsole to destructor of pty slave.

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

[PATCH] Cygwin: pty: Add FreeConsole to destructor of pty slave.

cygwin-patches mailing list
- When pseudo console is closed, all the processes attched to the
  pseudo console are terminated. This causes the problem reported
  in https://sourceware.org/pipermail/cygwin/2020-March/244046.html.
  This patch fixes the issue.
---
 winsup/cygwin/fhandler_tty.cc | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index b42e0aeb6..b2e725d5d 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -706,8 +706,15 @@ fhandler_pty_slave::fhandler_pty_slave (int unit)
 fhandler_pty_slave::~fhandler_pty_slave ()
 {
   if (!get_ttyp ())
-    /* Why comes here? Who clears _tc? */
-    return;
+    {
+      /* Why comes here? Who clears _tc? */
+      if (freeconsole_on_close)
+ {
+  FreeConsole ();
+  pcon_attached_to = -1;
+ }
+      return;
+    }
   if (get_pseudo_console ())
     {
       int used = 0;
--
2.21.0

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Cygwin: pty: Add FreeConsole to destructor of pty slave.

Corinna Vinschen-2
On Mar 13 12:06, Takashi Yano via Cygwin-patches wrote:

> - When pseudo console is closed, all the processes attched to the
>   pseudo console are terminated. This causes the problem reported
>   in https://sourceware.org/pipermail/cygwin/2020-March/244046.html.
>   This patch fixes the issue.
> ---
>  winsup/cygwin/fhandler_tty.cc | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
> index b42e0aeb6..b2e725d5d 100644
> --- a/winsup/cygwin/fhandler_tty.cc
> +++ b/winsup/cygwin/fhandler_tty.cc
> @@ -706,8 +706,15 @@ fhandler_pty_slave::fhandler_pty_slave (int unit)
>  fhandler_pty_slave::~fhandler_pty_slave ()
>  {
>    if (!get_ttyp ())
> -    /* Why comes here? Who clears _tc? */
> -    return;
> +    {
> +      /* Why comes here? Who clears _tc? */
> +      if (freeconsole_on_close)
> + {
> +  FreeConsole ();
> +  pcon_attached_to = -1;
> + }
> +      return;
> +    }
>    if (get_pseudo_console ())
>      {
>        int used = 0;
> --
> 2.21.0
Pushed.  However, the comment in that snippet (Why comes...) puzzles
me a bit.  Can you clarify this a bit?


Thanks,
Corinna

--
Corinna Vinschen
Cygwin Maintainer

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Cygwin: pty: Add FreeConsole to destructor of pty slave.

cygwin-patches mailing list
On Fri, 13 Mar 2020 10:58:25 +0100
Corinna Vinschen wrote:
> Pushed.  However, the comment in that snippet (Why comes...) puzzles
> me a bit.  Can you clarify this a bit?

_tc is set in fhandler_pty_master::setup() in very early stage.
So I thought it should have valid value in destructor of pty
slave. However, in practice, _tc may be NULL in some unclear
situation.

I wonder why _tc can be NULL in the destructor of pty slave.
I must have overlooked something...

--
Takashi Yano <[hidden email]>