summaryrefslogtreecommitdiff
path: root/sql/mysqld.cc
diff options
context:
space:
mode:
authorunknown <monty@narttu.mysql.fi>2003-05-26 17:55:49 +0300
committerunknown <monty@narttu.mysql.fi>2003-05-26 17:55:49 +0300
commit6fea1f3373ef5568a1e4242a1eac9e832397da01 (patch)
tree974325cb1a1d3eec0371863ff926c09ccb92b676 /sql/mysqld.cc
parent5dfc7130a8fd1d1976bb4eb125e2bf331d61ef53 (diff)
parent8ec9bd59eed392aa23e118fe1a98f20f701bb268 (diff)
downloadmariadb-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.cc15
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;
}