* sigproc.cc (sig_send): Set PIPE_NOWAIT for pipes which are not us.

This commit is contained in:
Christopher Faylor 2013-12-18 03:01:39 +00:00
parent 891b1e7e22
commit 1147c2111d
2 changed files with 14 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2013-12-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* sigproc.cc (sig_send): Set PIPE_NOWAIT for pipes which are not us.
2013-12-17 Christopher Faylor <me.cygwin2013@cgf.cx>
* fhandler.h (fhandler_pty_master::~fhandler_pty_master): Delete.

View File

@ -553,7 +553,16 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
}
VerifyHandle (sendsig);
if (!communing)
CloseHandle (hp);
{
CloseHandle (hp);
DWORD flag = PIPE_NOWAIT;
/* Set PIPE_NOWAIT here to avoid blocking when sending a signal.
(Yes, I know MSDN says not to use this)
We can't ever block here because it causes a deadlock when
debugging with gdb. */
BOOL res = SetNamedPipeHandleState (sendsig, &flag, NULL, NULL);
sigproc_printf ("%d = SetNamedPipeHandleState (%y, PIPE_NOWAIT, NULL, NULL)", res, sendsig);
}
else
{
si._si_commune._si_process_handle = hp;