From 53a492f5299827df6a22e7881aa7a87451cd9fc8 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Thu, 18 Jun 2015 21:44:44 +0000 Subject: [PATCH] fix pthread-robust-detach test --- src/regression/pthread-robust-detach.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/regression/pthread-robust-detach.c b/src/regression/pthread-robust-detach.c index dbf75a2..9c2c3bf 100644 --- a/src/regression/pthread-robust-detach.c +++ b/src/regression/pthread-robust-detach.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "test.h" #define TX(r,f,x) ( ((r)=(f))==x || (t_error(#f" failed: got %d \"%s\" want %d \"%s\"\n", r, strerror(r), x, strerror(x)), 0) ) @@ -23,6 +24,7 @@ int main(void) int r; pthread_mutexattr_t mtx_a; pthread_mutex_t mtx; + struct timespec ts; T(r, pthread_barrier_init(&barrier2, 0, 2)); T(r, pthread_mutexattr_init(&mtx_a)); @@ -32,6 +34,15 @@ int main(void) T(r, pthread_create(&td, 0, start_lock, &mtx)); T(r, pthread_detach(td)); pthread_barrier_wait(&barrier2); - TX(r, pthread_mutex_trylock(&mtx), EOWNERDEAD); + + // enough time to ensure that the other thread is dead + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_nsec += 100*1000*1000; + if (ts.tv_nsec >= 1000*1000*1000) { + ts.tv_sec++; + ts.tv_nsec -= 1000*1000*1000; + } + + TX(r, pthread_mutex_timedlock(&mtx, &ts), EOWNERDEAD); return t_status; } -- 2.20.1