* exceptions.cc (ctrl_c_handler): YA in a series or reversions. Put back
_my_tls.remove along with a comment. (sigpacket::process): Remove code which now causes a gdb deadlock. * sigproc.cc (_cygtls::signal_exit): Signal debugger with signal number earlier.
This commit is contained in:
parent
83b25b0eb7
commit
c1dedea603
|
@ -1,3 +1,11 @@
|
||||||
|
2011-12-09 Christopher Faylor <me.cygwin2011@cgf.cx>
|
||||||
|
|
||||||
|
* exceptions.cc (ctrl_c_handler): YA in a series or reversions. Put
|
||||||
|
back _my_tls.remove along with a comment.
|
||||||
|
(sigpacket::process): Remove code which now causes a gdb deadlock.
|
||||||
|
* sigproc.cc (_cygtls::signal_exit): Signal debugger with signal number
|
||||||
|
earlier.
|
||||||
|
|
||||||
2011-12-09 Christopher Faylor <me.cygwin2011@cgf.cx>
|
2011-12-09 Christopher Faylor <me.cygwin2011@cgf.cx>
|
||||||
|
|
||||||
* dllfixdbg: Work around annoying gdb warning about missing
|
* dllfixdbg: Work around annoying gdb warning about missing
|
||||||
|
|
|
@ -936,6 +936,13 @@ ctrl_c_handler (DWORD type)
|
||||||
ExitProcess (STATUS_CONTROL_C_EXIT);
|
ExitProcess (STATUS_CONTROL_C_EXIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Remove early or we could overthrow the threadlist in cygheap.
|
||||||
|
Deleting this line causes ash to SEGV if CTRL-C is hit repeatedly.
|
||||||
|
I am not exactly sure why that is. Maybe it's just because this
|
||||||
|
adds some early serialization to ctrl_c_handler which prevents
|
||||||
|
multiple simultaneous calls? */
|
||||||
|
_my_tls.remove (INFINITE);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (type == CTRL_C_EVENT || type == CTRL_BREAK_EVENT)
|
if (type == CTRL_C_EVENT || type == CTRL_BREAK_EVENT)
|
||||||
proc_subproc (PROC_KILLFORKED, 0);
|
proc_subproc (PROC_KILLFORKED, 0);
|
||||||
|
@ -1235,15 +1242,6 @@ sigpacket::process ()
|
||||||
if (si.si_signo == SIGTSTP || si.si_signo == SIGTTIN || si.si_signo == SIGTTOU)
|
if (si.si_signo == SIGTSTP || si.si_signo == SIGTTIN || si.si_signo == SIGTTOU)
|
||||||
sig_clear (SIGCONT);
|
sig_clear (SIGCONT);
|
||||||
|
|
||||||
#ifdef CGF
|
|
||||||
if (being_debugged ())
|
|
||||||
{
|
|
||||||
char sigmsg[sizeof (_CYGWIN_SIGNAL_STRING " 0xffffffff")];
|
|
||||||
__small_sprintf (sigmsg, _CYGWIN_SIGNAL_STRING " %p", si.si_signo);
|
|
||||||
OutputDebugString (sigmsg);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (handler == (void *) SIG_DFL)
|
if (handler == (void *) SIG_DFL)
|
||||||
{
|
{
|
||||||
if (insigwait_mask)
|
if (insigwait_mask)
|
||||||
|
|
|
@ -396,6 +396,7 @@ _cygtls::signal_exit (int rc)
|
||||||
close my_readsig. */
|
close my_readsig. */
|
||||||
WriteFile (myss, &sp, sizeof (sp), &len, NULL);
|
WriteFile (myss, &sp, sizeof (sp), &len, NULL);
|
||||||
}
|
}
|
||||||
|
signal_debugger (rc & 0x7f);
|
||||||
|
|
||||||
if (rc == SIGQUIT || rc == SIGABRT)
|
if (rc == SIGQUIT || rc == SIGABRT)
|
||||||
{
|
{
|
||||||
|
@ -413,7 +414,6 @@ _cygtls::signal_exit (int rc)
|
||||||
TerminateProcess (ch_spawn, sigExeced = rc);
|
TerminateProcess (ch_spawn, sigExeced = rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
signal_debugger (rc & 0x7f);
|
|
||||||
if ((rc & 0x80) && !try_to_debug ())
|
if ((rc & 0x80) && !try_to_debug ())
|
||||||
stackdump (thread_context.ebp, 1, 1);
|
stackdump (thread_context.ebp, 1, 1);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue