diff options
author | unknown <monty@hundin.mysql.fi> | 2001-11-22 03:12:40 +0200 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-11-22 03:12:40 +0200 |
commit | f1ebef4b717b0d3a4665b71c9b3fd5fa44433ad3 (patch) | |
tree | 7433063b792f3d29ea96164bdc1250af8f4766a6 /sql | |
parent | dfbeb93550fedc416bec85191d57acd93ffdd007 (diff) | |
parent | 2283f2d8327efad0421196bc9359c3336c27a7c8 (diff) | |
download | mariadb-git-f1ebef4b717b0d3a4665b71c9b3fd5fa44433ad3.tar.gz |
Merge work:/home/bk/mysql into hundin.mysql.fi:/my/bk/mysql
Diffstat (limited to 'sql')
-rw-r--r-- | sql/mysqld.cc | 35 | ||||
-rw-r--r-- | sql/stacktrace.c | 2 |
2 files changed, 21 insertions, 16 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 5e6b5c098d7..f56cad86086 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1116,6 +1116,19 @@ static void start_signal_handler(void) } #elif defined(__EMX__) +static void init_signals(void) +{ + signal(SIGQUIT, sig_kill); + signal(SIGKILL, sig_kill); + signal(SIGTERM, sig_kill); + signal(SIGINT, sig_kill); + signal(SIGHUP, sig_reload); // Flush everything + signal(SIGALRM, SIG_IGN); + signal(SIGBREAK,SIG_IGN); + signal_thread = pthread_self(); +} + + static void sig_reload(int signo) { reload_acl_and_cache((THD*) 0,REFRESH_LOG, (TABLE_LIST*) 0); // Flush everything @@ -1132,22 +1145,10 @@ static void sig_kill(int signo) signal(signo, SIG_ACK); } -static void init_signals(void) -{ - signal(SIGQUIT, sig_kill); - signal(SIGKILL, sig_kill); - signal(SIGTERM, sig_kill); - signal(SIGINT, sig_kill); - signal(SIGHUP, sig_reload); // Flush everything - signal(SIGALRM, SIG_IGN); - signal(SIGBREAK,SIG_IGN); - signal_thread = pthread_self(); -} static void start_signal_handler(void) { } - #else /* if ! __WIN__ && ! __EMX__ */ #ifdef HAVE_LINUXTHREADS @@ -1157,10 +1158,12 @@ static void start_signal_handler(void) static sig_handler handle_segfault(int sig) { THD *thd=current_thd; - // strictly speaking, one needs a mutex here - // but since we have got SIGSEGV already, things are a mess - // so not having the mutex is not as bad as possibly using a buggy - // mutex - so we keep things simple + /* + Strictly speaking, we should need a mutex here + but since we have got SIGSEGV already, things are a mess + so not having the mutex is not as bad as possibly using a buggy + mutex - so we keep things simple. + */ if (segfaulted) { fprintf(stderr, "Fatal signal %d while backtracing\n", sig); diff --git a/sql/stacktrace.c b/sql/stacktrace.c index 81d8debc27a..18db1949db9 100644 --- a/sql/stacktrace.c +++ b/sql/stacktrace.c @@ -218,5 +218,7 @@ void write_core(int sig) { signal(sig, SIG_DFL); pthread_kill(pthread_self(), sig); + /* On Solaris, the above kill is not enough */ + sigsend(P_PID,P_MYID,sig); } #endif |