* 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:
		| @@ -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); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user