From: John Baldwin Date: Tue, 7 Mar 2023 00:55:22 +0000 (-0800) Subject: gdb.threads/execl.c: Ensure all threads are started before execl. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5c1e53c99cf08b55fda078902a7363823e8638cb;p=binutils-gdb.git gdb.threads/execl.c: Ensure all threads are started before execl. Use a pthread_barrier to ensure all threads are started before proceeding to the breakpoint where info threads output is checked. --- diff --git a/gdb/testsuite/gdb.threads/execl.c b/gdb/testsuite/gdb.threads/execl.c index 8fb42e7e9ed..b9b42a29247 100644 --- a/gdb/testsuite/gdb.threads/execl.c +++ b/gdb/testsuite/gdb.threads/execl.c @@ -26,9 +26,13 @@ #include #include +static pthread_barrier_t threads_started_barrier; + void * thread_function (void *arg) { + pthread_barrier_wait (&threads_started_barrier); + while (1) sleep (100); return NULL; @@ -41,9 +45,13 @@ main (int argc, char* argv[]) pthread_t thread2; char *new_image; + pthread_barrier_init (&threads_started_barrier, NULL, 3); + pthread_create (&thread1, NULL, thread_function, NULL); pthread_create (&thread2, NULL, thread_function, NULL); + pthread_barrier_wait (&threads_started_barrier); + new_image = malloc (strlen (argv[0]) + 2); strcpy (new_image, argv[0]); strcat (new_image, "1");