Commit 86a454ed authored by unknown's avatar unknown

Bug#21567: mysqld doesn't react to Ctrl-C when run under GDB even with the --gdb option

Don't block SIGINT (Control-C) when --gdb is passed to mysqld.
Was broken at least on OS X.

(kudos to Mattias Jonsson)


sql/mysqld.cc:
  Don't block SIGINT when TEST_SIGINT (--gdb) is used, even if
  thr_kill_signal is some other signal (SIGUSR2) and
  pthread_sigmask() in signal_hand() isn't good enough.
parent df8e9fc2
...@@ -2211,10 +2211,6 @@ static void init_signals(void) ...@@ -2211,10 +2211,6 @@ static void init_signals(void)
struct sigaction sa; struct sigaction sa;
DBUG_ENTER("init_signals"); DBUG_ENTER("init_signals");
if (test_flags & TEST_SIGINT)
{
my_sigset(thr_kill_signal, end_thread_signal);
}
my_sigset(THR_SERVER_ALARM,print_signal_warning); // Should never be called! my_sigset(THR_SERVER_ALARM,print_signal_warning); // Should never be called!
if (!(test_flags & TEST_NO_STACKTRACE) || (test_flags & TEST_CORE_ON_SIGNAL)) if (!(test_flags & TEST_NO_STACKTRACE) || (test_flags & TEST_CORE_ON_SIGNAL))
...@@ -2251,7 +2247,6 @@ static void init_signals(void) ...@@ -2251,7 +2247,6 @@ static void init_signals(void)
(void) sigemptyset(&set); (void) sigemptyset(&set);
my_sigset(SIGPIPE,SIG_IGN); my_sigset(SIGPIPE,SIG_IGN);
sigaddset(&set,SIGPIPE); sigaddset(&set,SIGPIPE);
sigaddset(&set,SIGINT);
#ifndef IGNORE_SIGHUP_SIGQUIT #ifndef IGNORE_SIGHUP_SIGQUIT
sigaddset(&set,SIGQUIT); sigaddset(&set,SIGQUIT);
sigaddset(&set,SIGHUP); sigaddset(&set,SIGHUP);
...@@ -2273,9 +2268,12 @@ static void init_signals(void) ...@@ -2273,9 +2268,12 @@ static void init_signals(void)
sigaddset(&set,THR_SERVER_ALARM); sigaddset(&set,THR_SERVER_ALARM);
if (test_flags & TEST_SIGINT) if (test_flags & TEST_SIGINT)
{ {
my_sigset(thr_kill_signal, end_thread_signal);
// May be SIGINT // May be SIGINT
sigdelset(&set, thr_kill_signal); sigdelset(&set, thr_kill_signal);
} }
else
sigaddset(&set,SIGINT);
sigprocmask(SIG_SETMASK,&set,NULL); sigprocmask(SIG_SETMASK,&set,NULL);
pthread_sigmask(SIG_SETMASK,&set,NULL); pthread_sigmask(SIG_SETMASK,&set,NULL);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment