gdb/testsuite/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 26 Dec 2011 21:37:17 +0000 (21:37 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 26 Dec 2011 21:37:17 +0000 (21:37 +0000)
Fix racy FAILs.
* gdb.threads/fork-thread-pending.c (barrier): New variable.
(thread_function, thread_forker): Call pthread_barrier_wait for it.
(main): Call pthread_barrier_init for it.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.threads/fork-thread-pending.c

index 9b540e4..9dcc359 100644 (file)
@@ -1,5 +1,12 @@
 2011-12-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
+       Fix racy FAILs.
+       * gdb.threads/fork-thread-pending.c (barrier): New variable.
+       (thread_function, thread_forker): Call pthread_barrier_wait for it.
+       (main): Call pthread_barrier_init for it.
+
+2011-12-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
        Fix double send_gdb leading to racy FAILs.
        * gdb.base/break.exp (set silent break bp_location1): Replace
        3x send_gdb and gdb_expect by gdb_test.
index bc9026c..d2ced96 100644 (file)
@@ -28,6 +28,7 @@
 #define NUMTHREADS 10
 
 volatile int done = 0;
+static pthread_barrier_t barrier;
 
 static void *
 start (void *arg)
@@ -45,6 +46,8 @@ thread_function (void *arg)
 
   printf ("Thread <%d> executing\n", x);
 
+  pthread_barrier_wait (&barrier);
+
   while (!done)
     usleep (100);
 
@@ -62,6 +65,8 @@ thread_forker (void *arg)
 
   printf ("Thread forker <%d> executing\n", x);
 
+  pthread_barrier_wait (&barrier);
+
   switch ((pid = fork ()))
     {
     case -1:
@@ -89,6 +94,9 @@ main (void)
   int args[NUMTHREADS];
   int i, j;
 
+  i = pthread_barrier_init (&barrier, NULL, NUMTHREADS);
+  assert (i == 0);
+
   /* Create a few threads that do mostly nothing, and then one that
      forks.  */
   for (j = 0; j < NUMTHREADS - 1; ++j)