This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] fix posix/tst-spawn test


The test spawns two children but only waited for one.

2017-09-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* posix/tst-spawn.c (do_test): Wait for both children.

diff --git a/posix/tst-spawn.c b/posix/tst-spawn.c
index 08d92bd7a7afdaf1a1abf2f996b00bb107c1d631..c224e6a563327234b134214c98e6123ed99adbc8 100644
--- a/posix/tst-spawn.c
+++ b/posix/tst-spawn.c
@@ -240,22 +240,30 @@ do_test (int argc, char *argv[])
    if (posix_spawn (&pid, argv[1], &actions, NULL, spargv, environ) != 0)
      error (EXIT_FAILURE, errno, "posix_spawn");
 
+  /* Wait for the child.  */
+  if (waitpid (pid, &status, 0) != pid)
+    error (EXIT_FAILURE, errno, "wrong child");
+  if (WTERMSIG (status) != 0)
+    error (EXIT_FAILURE, 0, "Child terminated incorrectly");
+  if (WEXITSTATUS (status) != 0)
+    error (EXIT_FAILURE, 0, "Child failed");
+
    /* Same test but with a NULL pid argument.  */
    if (posix_spawn (NULL, argv[1], &actions, NULL, spargv, environ) != 0)
      error (EXIT_FAILURE, errno, "posix_spawn");
 
+  /* Wait for the child.  */
+  if (waitpid (-1, &status, 0) == -1)
+    error (EXIT_FAILURE, errno, "waitpid failed");
+  if (WTERMSIG (status) != 0)
+    error (EXIT_FAILURE, 0, "Child terminated incorrectly");
+  if (WEXITSTATUS (status) != 0)
+    error (EXIT_FAILURE, 0, "Child failed");
+
    /* Cleanup.  */
    if (posix_spawn_file_actions_destroy (&actions) != 0)
      error (EXIT_FAILURE, errno, "posix_spawn_file_actions_destroy");
    free (name3_copy);
 
-  /* Wait for the child.  */
-  if (waitpid (pid, &status, 0) != pid)
-    error (EXIT_FAILURE, errno, "wrong child");
-
-  if (WTERMSIG (status) != 0)
-    error (EXIT_FAILURE, 0, "Child terminated incorrectly");
-  status = WEXITSTATUS (status);
-
-  return status;
+  return 0;
 }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]