Index: gdb/testsuite/gdb.threads/fork-thread-pending.c |
diff --git a/gdb/testsuite/gdb.threads/fork-thread-pending.c b/gdb/testsuite/gdb.threads/fork-thread-pending.c |
index ba8824ec85ffb8d46be77369c5537d7f2ed8498e..82317d4b37544ac859e2094b60fba4d1a58f090c 100644 |
--- a/gdb/testsuite/gdb.threads/fork-thread-pending.c |
+++ b/gdb/testsuite/gdb.threads/fork-thread-pending.c |
@@ -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) |