From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755844AbdESQHe (ORCPT ); Fri, 19 May 2017 12:07:34 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:54204 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751852AbdESQHa (ORCPT ); Fri, 19 May 2017 12:07:30 -0400 Date: Fri, 19 May 2017 18:07:13 +0200 From: Peter Zijlstra To: Florian Weimer Cc: Markus Trippelsdorf , linux-kernel@vger.kernel.org, Thomas Gleixner , Sebastian Andrzej Siewior , Darren Hart Subject: Re: commit cfafcd117 "futex: Rework futex_lock_pi() to use rt_mutex_*_proxy_lock()" causes glibc nptl/tst-robustpi8 failure Message-ID: <20170519160713.3lzkqm44twkz36sd@hirez.programming.kicks-ass.net> References: <20170517173646.GA281@x4> <20170518074054.qbqqdxtxwhnmkydz@hirez.programming.kicks-ass.net> <957d4eae-1078-6529-e3d1-d94dc9d2b6f0@redhat.com> <20170518083149.gs4o5tfyvkbi5ncs@hirez.programming.kicks-ass.net> <665ea364-3967-407d-4039-983ec95ad171@redhat.com> <20170519154850.mlomgdsd26drq5j6@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170519154850.mlomgdsd26drq5j6@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 Fri, May 19, 2017 at 05:48:50PM +0200, Peter Zijlstra wrote: > Markus reported that the glibc/nptl/tst-robustpi8 test was failing after > commit: > > cfafcd117da0 ("futex: Rework futex_lock_pi() to use rt_mutex_*_proxy_lock()") > > Much tracing later I managed to catch the culprit: > > ld-linux-x86-64-2161 [019] .... 410.760971: SyS_futex: 00007ffbeb76b028: 80000875 op=FUTEX_LOCK_PI > ld-linux-x86-64-2161 [019] ...1 410.760972: lock_pi_update_atomic: 00007ffbeb76b028: curval=80000875 uval=80000875 newval=80000875 ret=0 > ld-linux-x86-64-2165 [011] .... 410.760978: SyS_futex: 00007ffbeb76b028: 80000875 op=FUTEX_UNLOCK_PI > ld-linux-x86-64-2165 [011] d..1 410.760979: do_futex: 00007ffbeb76b028: curval=80000875 uval=80000875 newval=80000871 ret=0 > ld-linux-x86-64-2165 [011] .... 410.760980: SyS_futex: 00007ffbeb76b028: 80000871 ret=0000 > ld-linux-x86-64-2161 [019] .... 410.760980: SyS_futex: 00007ffbeb76b028: 80000871 ret=ETIMEDOUT The above trace continues like: ld-linux-x86-64-2164 [006] .... 410.762336: SyS_futex: 00007ffbeb76b028: 80000871 op=FUTEX_LOCK_PI ld-linux-x86-64-2164 [006] ...1 410.762337: lock_pi_update_atomic: 00007ffbeb76b028: curval=80000871 uval=80000871 newval=80000871 ret=0 ld-linux-x86-64-2164 [006] .... 410.762347: SyS_futex: 00007ffbeb76b028: 80000871 ret=ETIMEDOUT ld-linux-x86-64-2161 [019] .... 410.762521: SyS_futex: 00007ffbeb76b028: 80000871 op=FUTEX_LOCK_PI ld-linux-x86-64-2161 [019] .... 410.762522: SyS_futex: 00007ffbeb76b028: 80000871 ret=EDEADLK And every subsequent attempt by 2161 will (obviously) return EDEADLK. Now since the test explicitly tracks the lock state[] and pthread_mutex_*lock() return values this _should_ have triggered one of the printf()'s, but I never saw any of those.