Fix compilation on Windows, and various Windows related mistakes introduced by
"safe exception patch". Remove misleading comments suggesting about signal() Windows, the routine here is part of a exception handler, and sig parameter is an exception code.
This commit is contained in:
parent
54cad2aae3
commit
e7fef1df58
@ -28,7 +28,7 @@
|
||||
#endif
|
||||
|
||||
/*
|
||||
We are handling signals in this file.
|
||||
We are handling signals/exceptions in this file.
|
||||
Any global variables we read should be 'volatile sig_atomic_t'
|
||||
to guarantee that we read some consistent value.
|
||||
*/
|
||||
@ -40,20 +40,18 @@ extern volatile sig_atomic_t ld_assume_kernel_is_set;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Handler for fatal signals
|
||||
* Handler for fatal signals on POSIX, exception handler on Windows.
|
||||
*
|
||||
* Fatal events (seg.fault, bus error etc.) will trigger
|
||||
* this signal handler. The handler will try to dump relevant
|
||||
* debugging information to stderr and dump a core image.
|
||||
*
|
||||
* Signal handlers can only use a set of 'safe' system calls
|
||||
* and library functions. A list of safe calls in POSIX systems
|
||||
* POSIX : Signal handlers should, if possible, only use a set of 'safe' system
|
||||
* calls and library functions. A list of safe calls in POSIX systems
|
||||
* are available at:
|
||||
* http://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html
|
||||
* For MS Windows, guidelines are available at:
|
||||
* http://msdn.microsoft.com/en-us/library/xdkz3x12(v=vs.71).aspx
|
||||
*
|
||||
* @param sig Signal number
|
||||
* @param sig Signal number /Exception code
|
||||
*/
|
||||
extern "C" sig_handler handle_fatal_signal(int sig)
|
||||
{
|
||||
@ -77,7 +75,13 @@ extern "C" sig_handler handle_fatal_signal(int sig)
|
||||
my_safe_printf_stderr("%02d%02d%02d %2d:%02d:%02d ",
|
||||
tm.tm_year % 100, tm.tm_mon+1, tm.tm_mday,
|
||||
tm.tm_hour, tm.tm_min, tm.tm_sec);
|
||||
if (opt_expect_abort && sig == SIGABRT)
|
||||
if (opt_expect_abort
|
||||
#ifdef _WIN32
|
||||
&& sig == EXCEPTION_BREAKPOINT /* __debugbreak in my_sigabrt_hander() */
|
||||
#else
|
||||
&& sig == SIGABRT
|
||||
#endif
|
||||
)
|
||||
{
|
||||
fprintf(stderr,"[Note] mysqld did an expected abort\n");
|
||||
goto end;
|
||||
@ -252,5 +256,7 @@ end:
|
||||
On Windows, do not terminate, but pass control to exception filter.
|
||||
*/
|
||||
_exit(1); // Using _exit(), since exit() is not async signal safe
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user