* exceptions.cc (signal_exit): Renamed from "really+exit". Always sets
EXIT_SIGNAL bit and reorganizes exit value for backwards cygwin handling. (handle_exceptions): Call signal_exit. Set "core dumped" bit. (sig_handle): Call signal_exit. Set "core dumped" bit appropriately.
This commit is contained in:
		| @@ -1,3 +1,11 @@ | |||||||
|  | Wed Jul 26 16:05:04 2000  Christopher Faylor <cgf@cygnus.com> | ||||||
|  |  | ||||||
|  | 	* exceptions.cc (signal_exit): Renamed from "really+exit".  Always sets | ||||||
|  | 	EXIT_SIGNAL bit and reorganizes exit value for backwards cygwin | ||||||
|  | 	handling. | ||||||
|  | 	(handle_exceptions): Call signal_exit.  Set "core dumped" bit. | ||||||
|  | 	(sig_handle): Call signal_exit.  Set "core dumped" bit appropriately. | ||||||
|  |  | ||||||
| Wed Jul 26 20:44:00 2000  Corinna Vinschen <corinna@vinschen.de> | Wed Jul 26 20:44:00 2000  Corinna Vinschen <corinna@vinschen.de> | ||||||
|  |  | ||||||
| 	* environ.cc (posify): Revert previous patch. | 	* environ.cc (posify): Revert previous patch. | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ extern DWORD __sigfirst, __siglast; | |||||||
| }; | }; | ||||||
|  |  | ||||||
| static BOOL WINAPI ctrl_c_handler (DWORD); | static BOOL WINAPI ctrl_c_handler (DWORD); | ||||||
| static void really_exit (int); | static void signal_exit (int); | ||||||
| static char windows_system_directory[1024]; | static char windows_system_directory[1024]; | ||||||
| static size_t windows_system_directory_length; | static size_t windows_system_directory_length; | ||||||
|  |  | ||||||
| @@ -518,7 +518,7 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) | |||||||
| 	  stackdump (e, &c); | 	  stackdump (e, &c); | ||||||
| 	} | 	} | ||||||
|       try_to_debug (); |       try_to_debug (); | ||||||
|       really_exit (EXIT_SIGNAL | sig); |       signal_exit (0x80 | sig);		// Flag signal + core dump | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   sig_send (NULL, sig, (DWORD) ebp);		// Signal myself |   sig_send (NULL, sig, (DWORD) ebp);		// Signal myself | ||||||
| @@ -869,17 +869,6 @@ extern "C" { | |||||||
| static void | static void | ||||||
| sig_handle_tty_stop (int sig) | sig_handle_tty_stop (int sig) | ||||||
| { | { | ||||||
| #if 0 |  | ||||||
|   HANDLE waitbuf[2]; |  | ||||||
|  |  | ||||||
|   /* Be sure that process's main thread isn't an owner of vital |  | ||||||
|      mutex to prevent cygwin subsystem lockups */ |  | ||||||
|   waitbuf[0] = pinfo_mutex; |  | ||||||
|   waitbuf[1] = title_mutex; |  | ||||||
|   WaitForMultipleObjects (2, waitbuf, TRUE, INFINITE); |  | ||||||
|   ReleaseMutex (pinfo_mutex); |  | ||||||
|   ReleaseMutex (title_mutex); |  | ||||||
| #endif |  | ||||||
|   myself->stopsig = sig; |   myself->stopsig = sig; | ||||||
|   myself->process_state |= PID_STOPPED; |   myself->process_state |= PID_STOPPED; | ||||||
|   /* See if we have a living parent.  If so, send it a special signal. |   /* See if we have a living parent.  If so, send it a special signal. | ||||||
| @@ -993,7 +982,7 @@ exit_sig: | |||||||
|       GetThreadContext (hMainThread, &c); |       GetThreadContext (hMainThread, &c); | ||||||
|       stackdump (NULL, &c); |       stackdump (NULL, &c); | ||||||
|       try_to_debug (); |       try_to_debug (); | ||||||
|       really_exit (EXIT_SIGNAL | sig); |       sig |= 0x80; | ||||||
|     } |     } | ||||||
|   sigproc_printf ("signal %d, about to call do_exit", sig); |   sigproc_printf ("signal %d, about to call do_exit", sig); | ||||||
|   TerminateThread (hMainThread, 0); |   TerminateThread (hMainThread, 0); | ||||||
| @@ -1001,20 +990,20 @@ exit_sig: | |||||||
|      use a resource lock when exiting.  */ |      use a resource lock when exiting.  */ | ||||||
|   user_data->resourcelocks->Delete (); |   user_data->resourcelocks->Delete (); | ||||||
|   user_data->resourcelocks->Init (); |   user_data->resourcelocks->Init (); | ||||||
|   do_exit (EXIT_SIGNAL | (sig << 8)); |   signal_exit (sig); | ||||||
|   /* Never returns */ |   /* Never returns */ | ||||||
| } | } | ||||||
|  |  | ||||||
| /* Cover function to `do_exit' to handle exiting even in presence of more | /* Cover function to `do_exit' to handle exiting even in presence of more | ||||||
|    exceptions.  We use to call exit, but a SIGSEGV shouldn't cause atexit |    exceptions.  We used to call exit, but a SIGSEGV shouldn't cause atexit | ||||||
|    routines to run.  */ |    routines to run.  */ | ||||||
|  |  | ||||||
| static void | static void | ||||||
| really_exit (int rc) | signal_exit (int rc) | ||||||
| { | { | ||||||
|   /* If the exception handler gets a trap, we could recurse awhile. |   /* If the exception handler gets a trap, we could recurse awhile. | ||||||
|      If this is non-zero, skip the cleaning up and exit NOW.  */ |      If this is non-zero, skip the cleaning up and exit NOW.  */ | ||||||
|  |  | ||||||
|  |   rc = EXIT_SIGNAL | (rc << 8); | ||||||
|   if (exit_already++) |   if (exit_already++) | ||||||
|     { |     { | ||||||
|       /* We are going down - reset our process_state without locking. */ |       /* We are going down - reset our process_state without locking. */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user