gdb.threads/next-bp-other-thread.c: Ensure child thread is started.
authorJohn Baldwin <jhb@FreeBSD.org>
Tue, 7 Mar 2023 00:55:22 +0000 (16:55 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 7 Mar 2023 00:55:22 +0000 (16:55 -0800)
Use a pthread_barrier to ensure the child thread is started before
the main thread gets to the first breakpoint.

gdb/testsuite/gdb.threads/next-bp-other-thread.c

index 60aa029464c347cee897068d9dea6bf48e629782..33c6ec119827c24a31a65f3f1bb920bd304fb9b0 100644 (file)
 /* Always zero, used in breakpoint condition.  */
 volatile int global_zero;
 
+static pthread_barrier_t threads_started_barrier;
+
 void *
 child_function (void *arg)
 {
+  pthread_barrier_wait (&threads_started_barrier);
+
   while (1)
     {
       usleep (1); /* set breakpoint child here */
@@ -39,7 +43,12 @@ main (void)
   pthread_t child_thread;
   int res;
 
+  pthread_barrier_init (&threads_started_barrier, NULL, 2);
+
   res = pthread_create (&child_thread, NULL, child_function, NULL);
+
+  pthread_barrier_wait (&threads_started_barrier);
+
   sleep (2); /* set wait-thread breakpoint here */
   exit (EXIT_SUCCESS);
 }