|
From: Bart V. A. <bva...@ac...> - 2011-07-29 06:54:06
|
On Fri, Jul 29, 2011 at 8:48 AM, Christian Borntraeger < bor...@de...> wrote: > > res = errno; > > - assert(res == EWOULDBLOCK || res == ENOSYS); > > - } > > Thanks. But isnt there another problem? errno is not set by the valgrind > internal syscall variant (coregrind/m_syscall.c), so the value of res > is random (or contains an implementation defined value). > The code in drd_pthread_intercepts.c is client code so the syscall() invocation in that source file invokes the glibc syscall() function and not the implementation in coregrind/m_syscall.c. Although I don't know exactly what went wrong in the sless390 nightly build, there is another reason I chose to remove the assert() statement: it is possible that Valgrind is built on a system where FUTEX_PRIVATE_FLAG is defined but the kernel does not support that flag. In that case errno will have another value than EWOULDBLOCK or ENOSYS. Bart. |