From d6b8f8470990db2d36b8e50f1055a673fdf1cea0 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Wed, 25 Jul 2018 16:31:45 +0200 Subject: C11 threads: Fix timeout and locking issues --- nptl/tst-cnd-basic.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'nptl/tst-cnd-basic.c') diff --git a/nptl/tst-cnd-basic.c b/nptl/tst-cnd-basic.c index 84b7f5f647..eb2fb6a77e 100644 --- a/nptl/tst-cnd-basic.c +++ b/nptl/tst-cnd-basic.c @@ -31,8 +31,14 @@ static mtx_t mutex; static int signal_parent (void) { + /* Acquire the lock so that cnd_signal does not run until + cnd_timedwait has been called. */ + if (mtx_lock (&mutex) != thrd_success) + FAIL_EXIT1 ("mtx_lock failed"); if (cnd_signal (&cond) != thrd_success) FAIL_EXIT1 ("cnd_signal"); + if (mtx_unlock (&mutex) != thrd_success) + FAIL_EXIT1 ("mtx_unlock"); thrd_exit (thrd_success); } @@ -47,6 +53,9 @@ do_test (void) if (mtx_init (&mutex, mtx_plain) != thrd_success) FAIL_EXIT1 ("mtx_init failed"); + if (mtx_lock (&mutex) != thrd_success) + FAIL_EXIT1 ("mtx_lock failed"); + if (thrd_create (&id, (thrd_start_t) signal_parent, NULL) != thrd_success) FAIL_EXIT1 ("thrd_create failed"); @@ -59,6 +68,9 @@ do_test (void) if (thrd_join (id, NULL) != thrd_success) FAIL_EXIT1 ("thrd_join failed"); + if (mtx_unlock (&mutex) != thrd_success) + FAIL_EXIT1 ("mtx_unlock"); + mtx_destroy (&mutex); cnd_destroy (&cond); -- cgit v1.2.3-70-g09d2