From: Bart Van Assche Date: Fri, 29 Jul 2011 06:30:23 +0000 (+0000) Subject: drd: Remove a too strict assert() statement X-Git-Tag: svn/VALGRIND_3_7_0~300 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85a61a6c6fa0bb3b543fa4cae510e63cbc2a952f;p=thirdparty%2Fvalgrind.git drd: Remove a too strict assert() statement git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11937 --- diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c index b3fa771dfc..856092fa6e 100644 --- a/drd/drd_pthread_intercepts.c +++ b/drd/drd_pthread_intercepts.c @@ -196,12 +196,10 @@ static void DRD_(sema_down)(DrdSema* sema) while (sema->counter == 0) { #if defined(__linux__) && defined(__NR_futex) if (syscall(__NR_futex, (UWord)&sema->counter, - FUTEX_WAIT | FUTEX_PRIVATE_FLAG, 0) == 0) { + FUTEX_WAIT | FUTEX_PRIVATE_FLAG, 0) == 0) res = 0; - } else { + else res = errno; - assert(res == EWOULDBLOCK || res == ENOSYS); - } #endif /* * Invoke sched_yield() on non-Linux systems, if the futex syscall has @@ -209,7 +207,7 @@ static void DRD_(sema_down)(DrdSema* sema) * where __NR_futex is defined and is run on a Linux system that does * not support the futex syscall. */ - if (res == ENOSYS) + if (res != 0 && res != EWOULDBLOCK) sched_yield(); } sema->counter--;