drd: Remove a too strict assert() statement
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11937 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c
index b3fa771..856092f 100644
--- a/drd/drd_pthread_intercepts.c
+++ b/drd/drd_pthread_intercepts.c
@@ -196,12 +196,10 @@
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 @@
* 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--;