Cygwin: pty: Fix master closing error regarding attach_mutex.

- If two or more pty masters are opened in a process, closing master
  causes error when closing attach_mutex. This patch fixes the issue.

Addresses:
https://cygwin.com/pipermail/cygwin-developers/2021-October/012418.html
This commit is contained in:
Takashi Yano 2021-10-09 01:28:54 +09:00 committed by Ken Brown
parent eb03ac17f1
commit 8a09deb1b7
2 changed files with 8 additions and 2 deletions

View File

@ -57,6 +57,7 @@ struct pipe_reply {
};
extern HANDLE attach_mutex; /* Defined in fhandler_console.cc */
static LONG NO_COPY master_cnt = 0;
inline static bool pcon_pid_alive (DWORD pid);
@ -2041,7 +2042,8 @@ fhandler_pty_master::close ()
}
release_output_mutex ();
master_fwd_thread->terminate_thread ();
CloseHandle (attach_mutex);
if (InterlockedDecrement (&master_cnt) == 0)
CloseHandle (attach_mutex);
}
}
@ -2876,7 +2878,8 @@ fhandler_pty_master::setup ()
if (!(pcon_mutex = CreateMutex (&sa, FALSE, buf)))
goto err;
attach_mutex = CreateMutex (&sa, FALSE, NULL);
if (InterlockedIncrement (&master_cnt) == 1)
attach_mutex = CreateMutex (&sa, FALSE, NULL);
/* Create master control pipe which allows the master to duplicate
the pty pipe handles to processes which deserve it. */

View File

@ -71,3 +71,6 @@ Bug Fixes
in ps(1) output.
Addresses: https://cygwin.com/pipermail/cygwin/2021-July/248998.html
https://cygwin.com/pipermail/cygwin/2021-August/249124.html
- Fix pty master closing error regarding attach_mutex.
Addresses: https://cygwin.com/pipermail/cygwin-developers/2021-October/012418.html