diff options
author | unknown <monty@narttu.mysql.fi> | 2003-05-26 17:55:49 +0300 |
---|---|---|
committer | unknown <monty@narttu.mysql.fi> | 2003-05-26 17:55:49 +0300 |
commit | 6fea1f3373ef5568a1e4242a1eac9e832397da01 (patch) | |
tree | 974325cb1a1d3eec0371863ff926c09ccb92b676 /sql/mysqld.cc | |
parent | 5dfc7130a8fd1d1976bb4eb125e2bf331d61ef53 (diff) | |
parent | 8ec9bd59eed392aa23e118fe1a98f20f701bb268 (diff) | |
download | mariadb-git-6fea1f3373ef5568a1e4242a1eac9e832397da01.tar.gz |
Merge with 3.23 to get fix for kill mysqld-pid
BitKeeper/etc/logging_ok:
auto-union
include/mysql_com.h:
Auto merged
sql/log_event.cc:
Auto merged
sql/ha_innodb.cc:
Keep local copy
Diffstat (limited to 'sql/mysqld.cc')
-rw-r--r-- | sql/mysqld.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 2992fcfd908..721b0e89bf8 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1589,6 +1589,7 @@ information that should help you find out what is causing the crash.\n"); static void init_signals(void) { sigset_t set; + struct sigaction sa; DBUG_ENTER("init_signals"); sigset(THR_KILL_SIGNAL,end_thread_signal); @@ -1596,7 +1597,6 @@ static void init_signals(void) if (!(test_flags & TEST_NO_STACKTRACE) || (test_flags & TEST_CORE_ON_SIGNAL)) { - struct sigaction sa; sa.sa_flags = SA_RESETHAND | SA_NODEFER; sigemptyset(&sa.sa_mask); sigprocmask(SIG_SETMASK,&sa.sa_mask,NULL); @@ -1638,15 +1638,22 @@ static void init_signals(void) sigaddset(&set,SIGQUIT); sigaddset(&set,SIGTERM); sigaddset(&set,SIGHUP); - sigset(SIGTERM, print_signal_warning); // If it's blocked by parent - sigset(SIGHUP, print_signal_warning); // If it's blocked by parent + + /* Fix signals if blocked by parents (can happen on Mac OS X) */ + sa.sa_flags = 0; + sa.sa_handler = print_signal_warning; + sigaction(SIGTERM, &sa, (struct sigaction*) 0); + sa.sa_flags = 0; + sa.sa_handler = print_signal_warning; + sigaction(SIGHUP, &sa, (struct sigaction*) 0); #ifdef SIGTSTP sigaddset(&set,SIGTSTP); #endif sigaddset(&set,THR_SERVER_ALARM); sigdelset(&set,THR_KILL_SIGNAL); // May be SIGINT sigdelset(&set,THR_CLIENT_ALARM); // For alarms - (void) pthread_sigmask(SIG_SETMASK,&set,NULL); + sigprocmask(SIG_SETMASK,&set,NULL); + pthread_sigmask(SIG_SETMASK,&set,NULL); DBUG_VOID_RETURN; } |