On Wed, May 17, 2017 at 07:50:31PM +0200, Florian Weimer wrote: > On 05/17/2017 07:36 PM, Markus Trippelsdorf wrote: > > Since: > > commit cfafcd117da0216520568c195cb2f6cd1980c4bb > > Author: Peter Zijlstra <pet...@infradead.org> > > Date: Wed Mar 22 11:35:58 2017 +0100 > > > > futex: Rework futex_lock_pi() to use rt_mutex_*_proxy_lock() > > > > glibc's nptl/tst-robustpi8 testcase fails: > > > > glibc-build % ./nptl/tst-robustpi8 > > tst-robustpi8: ../nptl/pthread_mutex_lock.c:424: __pthread_mutex_lock_full: > > Assertion `INTERNAL_SYSCALL_ERRNO (e, __err) != ESRCH || !robust' failed. > > > > pthread_mutex_lock.c: > > 415 if (INTERNAL_SYSCALL_ERROR_P (e, __err) > > 416 && (INTERNAL_SYSCALL_ERRNO (e, __err) == ESRCH > > 417 || INTERNAL_SYSCALL_ERRNO (e, __err) == EDEADLK)) > > 418 { > > 419 assert (INTERNAL_SYSCALL_ERRNO (e, __err) != EDEADLK > > 420 || (kind != PTHREAD_MUTEX_ERRORCHECK_NP > > 421 && kind != PTHREAD_MUTEX_RECURSIVE_NP)); > > 422 /* ESRCH can happen only for non-robust PI mutexes where > > 423 the owner of the lock died. */ > > 424 assert (INTERNAL_SYSCALL_ERRNO (e, __err) != ESRCH || > > !robust); > > > > During bisection the commit above hangs the machine when I run the > > testcase. > > > > See: https://sourceware.org/bugzilla/show_bug.cgi?id=21487 > > Markus, could you confirm that it is chocking on the EAGAIN failure? Or > is it something else? > > What is userspace supposed to do with the error code?
IIRC that -EAGAIN should not get to userspace. The kernel should retry the lock operation. I'll go stare at it.