Commit d89329c6 authored by unknown's avatar unknown
Browse files

reverted linuxthreads thr_client_alarm fix (not future-proof)

fixed differently: wake up select_thread with THR_SERVER_ALARM instead


mysys/thr_alarm.c:
  reverted linuxthreads thr_client_alarm fix (not future-proof)
parent cc72a835
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -78,6 +78,10 @@ void init_thr_alarm(uint max_alarms)
  sigfillset(&full_signal_set);			/* Neaded to block signals */
  pthread_mutex_init(&LOCK_alarm,MY_MUTEX_INIT_FAST);
  pthread_cond_init(&COND_alarm,NULL);
  if (thd_lib_detected == THD_LIB_LT)
    thr_client_alarm= SIGALRM;
  else
    thr_client_alarm= SIGUSR1;
#ifndef USE_ALARM_THREAD
  if (thd_lib_detected != THD_LIB_LT)
#endif
+8 −15
Original line number Diff line number Diff line
@@ -622,7 +622,7 @@ static void close_connections(void)
    DBUG_PRINT("info",("Waiting for select thread"));

#ifndef DONT_USE_THR_ALARM
    if (pthread_kill(select_thread, thr_client_alarm))
    if (pthread_kill(select_thread, THR_SERVER_ALARM))
      break;					// allready dead
#endif
    set_timespec(abstime, 2);
@@ -2062,17 +2062,6 @@ static void init_signals(void)
  struct sigaction sa;
  DBUG_ENTER("init_signals");

  if (thd_lib_detected == THD_LIB_LT)
  {
    thr_client_alarm= SIGALRM;
    thr_kill_signal= SIGINT;
  }
  else
  {
    thr_client_alarm= SIGUSR1;
    thr_kill_signal= SIGUSR2;
  }

  if (test_flags & TEST_SIGINT)
  {
    my_sigset(thr_kill_signal, end_thread_signal);
@@ -2131,14 +2120,11 @@ static void init_signals(void)
#ifdef SIGTSTP
  sigaddset(&set,SIGTSTP);
#endif
  sigaddset(&set,THR_SERVER_ALARM);
  if (test_flags & TEST_SIGINT)
  {
    // May be SIGINT
    sigdelset(&set, thr_kill_signal);
  }
  // For alarms
  sigdelset(&set, thr_client_alarm);
  sigprocmask(SIG_SETMASK,&set,NULL);
  pthread_sigmask(SIG_SETMASK,&set,NULL);
  DBUG_VOID_RETURN;
@@ -3167,6 +3153,13 @@ int main(int argc, char **argv)

  MY_INIT(argv[0]);		// init my_sys library & pthreads

  /* Set signal used to kill MySQL */
#if defined(SIGUSR2)
  thr_kill_signal= thd_lib_detected == THD_LIB_LT ? SIGINT : SIGUSR2;
#else
  thr_kill_signal= thd_lib_detected == SIGINT;
#endif
  
#ifdef _CUSTOMSTARTUPCONFIG_
  if (_cust_check_startup())
  {