From d5c977948bb2c66852d7a79a04484aa5c0eecaa4 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sat, 19 Jan 2013 05:57:06 +0000 Subject: [PATCH] * exceptions.cc (ctrl_c_handler): Remove special-case handler for "cygwin_finished_initializing". * sigproc.cc (exit_thread): Undefine ExitThread earlier to avoid recursion on error return. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/exceptions.cc | 8 -------- winsup/cygwin/sigproc.cc | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e43b049a8..cd2f45a27 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2013-01-19 Christopher Faylor + + * exceptions.cc (ctrl_c_handler): Remove special-case handler for + "cygwin_finished_initializing". + * sigproc.cc (exit_thread): Undefine ExitThread earlier to avoid + recursion on error return. + 2013-01-18 Corinna Vinschen * errno.cc (errmap): Map ERROR_LOCK_VIOLATION to EBUSY. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index c8bf6d2cb..caccb8f53 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -875,14 +875,6 @@ ctrl_c_handler (DWORD type) { static bool saw_close; - if (!cygwin_finished_initializing) - { - if (myself->cygstarted) /* Was this process created by a cygwin process? */ - return TRUE; /* Yes. Let the parent eventually handle CTRL-C issues. */ - debug_printf ("exiting with status %p", 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 diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index fc5631785..f1d299800 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -471,6 +471,7 @@ sigproc_init () void exit_thread (DWORD res) { +# undef ExitThread sigfillset (&_my_tls.sigmask); /* No signals wanted */ lock_process for_now; /* May block indefinitely when exiting. */ if (exit_state) @@ -496,7 +497,6 @@ exit_thread (DWORD res) siginfo_t si = {__SIGTHREADEXIT, SI_KERNEL}; si.si_cyg = h; sig_send (myself_nowait, si, &_my_tls); -# undef ExitThread ExitThread (0); }