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