aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Love <cel@us.ibm.com>2021-05-21 11:29:26 -0500
committerCarl Love <cel@us.ibm.com>2021-06-02 10:29:36 -0500
commit170960e8e1413c354a76e3fe83c789407c3dc101 (patch)
tree4b7d288dd4454dc44a1e783f2a7f26f906d4c88e
parent8f467114435286e4f78b16fc1f5864acf6488fc0 (diff)
downloadfsf-binutils-gdb-170960e8e1413c354a76e3fe83c789407c3dc101.zip
fsf-binutils-gdb-170960e8e1413c354a76e3fe83c789407c3dc101.tar.gz
fsf-binutils-gdb-170960e8e1413c354a76e3fe83c789407c3dc101.tar.bz2
Fix threadapply test
The current test case leaves detached processes running at the end of the test. This patch changes the test to use a barrier wait to ensure all processes exit cleanly at the end of the tests. gdb/testsuite/ChangeLog: 2021-06-02 Carl Love <cel@us.ibm.com> * gdb.threads/threadapply.c: Add global mybarrier. (main): Add pthread_barrier_init. (thread_function): Replace while loop with myp increment and pthread_barrier_wait.
-rw-r--r--gdb/testsuite/ChangeLog7
-rw-r--r--gdb/testsuite/gdb.threads/threadapply.c12
2 files changed, 12 insertions, 7 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index f34812d..a0469c8 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2021-06-02 Carl Love <cel@us.ibm.com>
+
+ * gdb.threads/threadapply.c: Add global mybarrier.
+ (main): Add pthread_barrier_init.
+ (thread_function): Replace while loop with myp increment and
+ pthread_barrier_wait.
+
2021-06-02 Andrew Burgess <andrew.burgess@embecosm.com>
* lib/gdb.exp (gdb_compile): Only add the -J option when using a
diff --git a/gdb/testsuite/gdb.threads/threadapply.c b/gdb/testsuite/gdb.threads/threadapply.c
index 93a3fc8..1ac99b0 100644
--- a/gdb/testsuite/gdb.threads/threadapply.c
+++ b/gdb/testsuite/gdb.threads/threadapply.c
@@ -27,6 +27,7 @@ void *thread_function(void *arg); /* Pointer to function executed by each thread
#define NUM 5
unsigned int args[NUM+1];
+pthread_barrier_t mybarrier;
int main() {
int res;
@@ -35,6 +36,8 @@ int main() {
void *thread_result;
long i;
+ pthread_barrier_init(&mybarrier, NULL, NUM + 1);
+
for (i = 0; i < NUM; i++)
{
args[i] = 1; /* Init value. */
@@ -69,12 +72,7 @@ void *thread_function(void *arg) {
int my_number = (long) arg;
int *myp = (int *) &args[my_number];
- /* Don't run forever. Run just short of it :) */
- while (*myp > 0)
- {
- (*myp) ++; /* Loop increment. */
- }
-
- pthread_exit(NULL);
+ (*myp) ++; /* Increment so parent knows child started. */
+ pthread_barrier_wait(&mybarrier);
}