summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/os/WindowsCache.cmake1
-rw-r--r--config.h.cmake1
-rw-r--r--configure.cmake1
-rw-r--r--include/my_pthread.h14
-rw-r--r--mysys/thr_alarm.c3
-rw-r--r--sql/mysqld.cc10
6 files changed, 9 insertions, 21 deletions
diff --git a/cmake/os/WindowsCache.cmake b/cmake/os/WindowsCache.cmake
index 149fdad231f..a9b01844443 100644
--- a/cmake/os/WindowsCache.cmake
+++ b/cmake/os/WindowsCache.cmake
@@ -151,7 +151,6 @@ SET(HAVE_SIGSET CACHE INTERNAL "")
SET(HAVE_SIGTERM 1 CACHE INTERNAL "")
SET(HAVE_SIGTHREADMASK CACHE INTERNAL "")
SET(HAVE_SIGWAIT CACHE INTERNAL "")
-SET(HAVE_SIGWAITINFO CACHE INTERNAL "")
SET(HAVE_SIZEOF_CHARP TRUE CACHE INTERNAL "")
SET(SIZEOF_CHARP ${CMAKE_SIZEOF_VOID_P} CACHE INTERNAL "")
SET(HAVE_SIZEOF_IN6_ADDR TRUE CACHE INTERNAL "")
diff --git a/config.h.cmake b/config.h.cmake
index 652ea683ce4..dc954faf850 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -215,7 +215,6 @@
#cmakedefine HAVE_SIGACTION 1
#cmakedefine HAVE_SIGTHREADMASK 1
#cmakedefine HAVE_SIGWAIT 1
-#cmakedefine HAVE_SIGWAITINFO 1
#cmakedefine HAVE_SLEEP 1
#cmakedefine HAVE_SNPRINTF 1
#cmakedefine HAVE_STPCPY 1
diff --git a/configure.cmake b/configure.cmake
index b31c9e48388..6a511cb9381 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -400,7 +400,6 @@ CHECK_FUNCTION_EXISTS (setlocale HAVE_SETLOCALE)
CHECK_FUNCTION_EXISTS (sigaction HAVE_SIGACTION)
CHECK_FUNCTION_EXISTS (sigthreadmask HAVE_SIGTHREADMASK)
CHECK_FUNCTION_EXISTS (sigwait HAVE_SIGWAIT)
-CHECK_FUNCTION_EXISTS (sigwaitinfo HAVE_SIGWAITINFO)
CHECK_FUNCTION_EXISTS (sigset HAVE_SIGSET)
CHECK_FUNCTION_EXISTS (sleep HAVE_SLEEP)
CHECK_FUNCTION_EXISTS (snprintf HAVE_SNPRINTF)
diff --git a/include/my_pthread.h b/include/my_pthread.h
index 81dd63ee331..5e0c79c2142 100644
--- a/include/my_pthread.h
+++ b/include/my_pthread.h
@@ -189,19 +189,7 @@ extern int my_pthread_create_detached;
int sigwait(sigset_t *set, int *sig);
#endif
-static inline int my_sigwait(sigset_t *set, int *sig, int *code)
-{
-#ifdef HAVE_SIGWAITINFO
- siginfo_t siginfo;
- *sig= sigwaitinfo(set, &siginfo);
- *code= siginfo.si_code;
- return *sig < 0 ? errno : 0;
-#else
-#define SI_KERNEL 128
- *code= 0;
- return sigwait(set, sig);
-#endif
-}
+#define my_sigwait(A,B) sigwait((A),(B))
#if defined(HAVE_SIGTHREADMASK) && !defined(HAVE_PTHREAD_SIGMASK)
#define pthread_sigmask(A,B,C) sigthreadmask((A),(B),(C))
diff --git a/mysys/thr_alarm.c b/mysys/thr_alarm.c
index 553dc55bfc3..47b3205f608 100644
--- a/mysys/thr_alarm.c
+++ b/mysys/thr_alarm.c
@@ -731,8 +731,7 @@ static void *signal_hand(void *arg __attribute__((unused)))
DBUG_PRINT("info",("Starting signal and alarm handling thread"));
for(;;)
{
- int code;
- while ((error=my_sigwait(&set,&sig,&code)) == EINTR)
+ while ((error= my_sigwait(&set, &sig)) == EINTR)
printf("sigwait restarted\n");
if (error)
{
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 26012f317f9..fe47c4406ad 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -3081,6 +3081,11 @@ void init_signals(void)
struct sigaction sa;
DBUG_ENTER("init_signals");
+ /*
+ No need to check return value, it is expected to fail only if we're session
+ leader already (e.g. under systemd).
+ */
+ setsid();
my_sigset(THR_SERVER_ALARM,print_signal_warning); // Should never be called!
if (opt_stack_trace || (test_flags & TEST_CORE_ON_SIGNAL))
@@ -3246,9 +3251,8 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
for (;;)
{
int error;
- int origin;
- while ((error= my_sigwait(&set, &sig, &origin)) == EINTR) /* no-op */;
+ while ((error= my_sigwait(&set, &sig)) == EINTR) /* no-op */;
if (cleanup_done)
{
DBUG_PRINT("quit",("signal_handler: calling my_thread_end()"));
@@ -3288,7 +3292,7 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
}
break;
case SIGHUP:
- if (!abort_loop && origin != SI_KERNEL)
+ if (!abort_loop)
{
int not_used;
mysql_print_status(); // Print some debug info