Преглед изворни кода

Add force-exit timeout to get around some of the exit hang issues users have observed. Will punt full diagnosis to V2 which rewrites all these code paths anyway.

Adam Ierymenko пре 4 година
родитељ
комит
d2f2abe525
1 измењених фајлова са 6 додато и 1 уклоњено
  1. 6 1
      one.cpp

+ 6 - 1
one.cpp

@@ -1480,8 +1480,13 @@ static int idtool(int argc,char **argv)
 static void _sighandlerHup(int sig)
 static void _sighandlerHup(int sig)
 {
 {
 }
 }
+static void _sighandlerReallyQuit(int sig)
+{
+	exit(0);
+}
 static void _sighandlerQuit(int sig)
 static void _sighandlerQuit(int sig)
 {
 {
+	alarm(5); // force exit after 5s
 	OneService *s = zt1Service;
 	OneService *s = zt1Service;
 	if (s)
 	if (s)
 		s->terminate();
 		s->terminate();
@@ -1873,7 +1878,7 @@ int main(int argc,char **argv)
 	signal(SIGIO,SIG_IGN);
 	signal(SIGIO,SIG_IGN);
 	signal(SIGUSR1,SIG_IGN);
 	signal(SIGUSR1,SIG_IGN);
 	signal(SIGUSR2,SIG_IGN);
 	signal(SIGUSR2,SIG_IGN);
-	signal(SIGALRM,SIG_IGN);
+	signal(SIGALRM,&_sighandlerReallyQuit);
 	signal(SIGINT,&_sighandlerQuit);
 	signal(SIGINT,&_sighandlerQuit);
 	signal(SIGTERM,&_sighandlerQuit);
 	signal(SIGTERM,&_sighandlerQuit);
 	signal(SIGQUIT,&_sighandlerQuit);
 	signal(SIGQUIT,&_sighandlerQuit);