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:
parent
eb03ac17f1
commit
8a09deb1b7
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue