Commit 62150681 authored by unknown's avatar unknown

Escaping [] so that darwin[7-8] gets into 'configure' and not darwin7-8

Adding a compilation define so that on recent Darwin mysqld does not react to SIGHUP and SIGQUIT:
this fixes a rpl000001 problem on our Powermac G5 machine (popping after an upgrade from 10.3.4 to
10.3.5) and is expected to fix 
BUG#2030 "relay bin log on slave resets multiple times a second"
(i.e. under some Mac OS X Panther versions, mysqld receives many SIGHUP and SIGQUIT).
So this fix is more a problem-hider than a real understanding of why mysqld receives so many signals.
Note that we saw other problems on this OS where mysqld reacts to Ctrl-Z but apparently only once,
where using SSL seems to make the problem more frequent...


configure.in:
  Escaping [] so that darwin[7-8] gets into 'configure' and not darwin7-8
  Adding a compilation define so that on recent Darwin mysqld does not react to SIGHUP and SIGQUIT.
sql/mysqld.cc:
  optionally ignore SIGHUP and SIGQUIT, for some Mac OS X Panther versions which send too many of those.
parent 4dfe16c2
......@@ -1047,10 +1047,11 @@ case $SYSTEM_TYPE in
MAX_C_OPTIMIZE="-O"
fi
;;
*darwin[7-8]*)
*darwin[[7-8]]*)
# don't forget to escape [] like above
if test "$ac_cv_prog_gcc" = "yes"
then
FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ"
FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT"
CFLAGS="$CFLAGS $FLAGS"
CXXFLAGS="$CXXFLAGS $FLAGS"
MAX_C_OPTIMIZE="-O"
......
......@@ -1836,9 +1836,11 @@ static void init_signals(void)
sigaddset(&set,SIGPIPE);
#endif
sigaddset(&set,SIGINT);
#ifndef IGNORE_SIGHUP_SIGQUIT
sigaddset(&set,SIGQUIT);
sigaddset(&set,SIGTERM);
sigaddset(&set,SIGHUP);
#endif
sigaddset(&set,SIGTERM);
/* Fix signals if blocked by parents (can happen on Mac OS X) */
sigemptyset(&sa.sa_mask);
......@@ -1921,11 +1923,13 @@ extern "C" void *signal_hand(void *arg __attribute__((unused)))
#ifdef USE_ONE_SIGNAL_HAND
(void) sigaddset(&set,THR_SERVER_ALARM); // For alarms
#endif
#ifndef IGNORE_SIGHUP_SIGQUIT
(void) sigaddset(&set,SIGQUIT);
(void) sigaddset(&set,SIGTERM);
#if THR_CLIENT_ALARM != SIGHUP
(void) sigaddset(&set,SIGHUP);
#endif
#endif
(void) sigaddset(&set,SIGTERM);
(void) sigaddset(&set,SIGTSTP);
/* Save pid to this process (or thread on Linux) */
......
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