* exceptions.cc (try_to_debug): Don't use yield() when waiting for another

process.
(sigpacket::setup_handler): Fix long-standing problem where loop could exit
with lock held.
This commit is contained in:
Christopher Faylor 2013-06-08 16:54:41 +00:00
parent 1952976a1b
commit 62003f180a
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2013-06-08 Christopher Faylor <me.cygwin2013@cgf.cx>
* exceptions.cc (try_to_debug): Don't use yield() when waiting for
another process.
(sigpacket::setup_handler): Fix long-standing problem where loop could
exit with lock held.
2013-06-08 Christopher Faylor <me.cygwin2013@cgf.cx>
* miscfuncs.cc (yield): Revert (after researching) to calling SleepEx

View File

@ -508,7 +508,7 @@ try_to_debug (bool waitloop)
return dbg;
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE);
while (!being_debugged ())
yield ();
Sleep (1);
Sleep (2000);
}
@ -923,7 +923,10 @@ sigpacket::setup_handler (void *handler, struct sigaction& siga, _cygtls *tls)
DWORD res;
HANDLE hth = (HANDLE) *tls;
if (!hth)
sigproc_printf ("thread handle NULL, not set up yet?");
{
tls->unlock ();
sigproc_printf ("thread handle NULL, not set up yet?");
}
else
{
/* Suspend the thread which will receive the signal.
@ -936,6 +939,7 @@ sigpacket::setup_handler (void *handler, struct sigaction& siga, _cygtls *tls)
/* Just set pending if thread is already suspended */
if (res)
{
tls->unlock ();
ResumeThread (hth);
goto out;
}