From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754048AbdERG5n (ORCPT ); Thu, 18 May 2017 02:57:43 -0400 Received: from merlin.infradead.org ([205.233.59.134]:54968 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753965AbdERG51 (ORCPT ); Thu, 18 May 2017 02:57:27 -0400 Date: Thu, 18 May 2017 08:57:23 +0200 From: Peter Zijlstra To: Florian Weimer Cc: Markus Trippelsdorf , linux-kernel@vger.kernel.org, Thomas Gleixner , Torvald Riegel Subject: Re: commit cfafcd117 "futex: Rework futex_lock_pi() to use rt_mutex_*_proxy_lock()" causes glibc nptl/tst-robustpi8 failure Message-ID: <20170518065723.iykfcoxvxj2clo5n@hirez.programming.kicks-ass.net> References: <20170517173646.GA281@x4> <784746fd-55e4-679c-c9a5-85aeffc166b3@redhat.com> <20170518064617.ujsw63hf2ycejgsz@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170518064617.ujsw63hf2ycejgsz@hirez.programming.kicks-ass.net> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 18, 2017 at 08:46:17AM +0200, Peter Zijlstra wrote: > 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 > > > 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. So commit: bebe5b514345 ("futex: Futex_unlock_pi() determinism") put a WARN_ON_ONCE() on that -EAGAIN condition, and since that doesn't appear to be triggering, I suspect something else is buggered.