diff options
-rw-r--r-- | cmake/os/WindowsCache.cmake | 1 | ||||
-rw-r--r-- | config.h.cmake | 1 | ||||
-rw-r--r-- | configure.cmake | 1 | ||||
-rw-r--r-- | include/my_pthread.h | 14 | ||||
-rw-r--r-- | mysys/thr_alarm.c | 3 | ||||
-rw-r--r-- | sql/mysqld.cc | 10 |
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 |