[netfilter-cvslog] r3590 - trunk/nfsim/core

rusty at netfilter.org rusty at netfilter.org
Wed Jan 12 12:33:14 CET 2005


Author: rusty at netfilter.org
Date: 2005-01-12 12:33:14 +0100 (Wed, 12 Jan 2005)
New Revision: 3590

Modified:
   trunk/nfsim/core/failtest.c
   trunk/nfsim/core/message.c
Log:
Handle EINTR from wait (happens under load with --failtest and valgrind)


Modified: trunk/nfsim/core/failtest.c
===================================================================
--- trunk/nfsim/core/failtest.c	2005-01-10 22:46:42 UTC (rev 3589)
+++ trunk/nfsim/core/failtest.c	2005-01-12 11:33:14 UTC (rev 3590)
@@ -273,8 +273,11 @@
 	}
 
 	dec->failed = false;
-	if (waitpid(child, &status, 0) != child)
-		barf_perror("failtest waitpid failed for child %i",(int)child);
+	while (waitpid(child, &status, 0) < 0) {
+		if (errno != EINTR)
+			barf_perror("failtest waitpid failed for child %i",
+				    (int)child);
+	}
 
 	/* If child succeeded, or mere script failure, continue. */
 	if (WIFEXITED(status) && (WEXITSTATUS(status) == EXIT_SUCCESS

Modified: trunk/nfsim/core/message.c
===================================================================
--- trunk/nfsim/core/message.c	2005-01-10 22:46:42 UTC (rev 3589)
+++ trunk/nfsim/core/message.c	2005-01-12 11:33:14 UTC (rev 3590)
@@ -130,8 +130,9 @@
 {
 	int status;
 
-	if (waitpid(currprog->pid, &status, 0) <= 0)
-		barf_perror("Waiting for child %s", name);
+	while (waitpid(currprog->pid, &status, 0) <= 0)
+		if (errno != EINTR)
+			barf_perror("Waiting for child %s", name);
 
 	close(currprog->fd);
 	talloc_free(currprog);




More information about the netfilter-cvslog mailing list