Blob Blame History Raw
diff -upr sysstat-10.1.5.orig/sadc.c sysstat-10.1.5/sadc.c
--- sysstat-10.1.5.orig/sadc.c	2013-03-23 17:31:46.000000000 +0100
+++ sysstat-10.1.5/sadc.c	2016-04-29 17:52:11.438614928 +0200
@@ -225,17 +225,19 @@ void alarm_handler(int sig)
  */
 void int_handler(int sig)
 {
-	if (!optz) {
-		/* sadc hasn't been called by sar */
+        pid_t ppid = getppid();
+
+        if (!optz || (ppid == 1)) {
+		/* sadc hasn't been called by sar or sar process is already dead */
 		exit(1);
 	}
-	
+
 	/*
 	 * When starting sar then pressing ctrl/c, SIGINT is received
 	 * by sadc, not sar. So send SIGINT to sar so that average stats
 	 * can be displayed.
 	 */
-	if (kill(getppid(), SIGINT) < 0) {
+	if (kill(ppid, SIGINT) < 0) {
 		exit(1);
 	}
 }