Re: commit cfafcd117 "futex: Rework futex_lock_pi() to use rt_mutex_*_proxy_lock()" causes glibc nptl/tst-robustpi8 failure

From: Peter Zijlstra
Date: Thu May 18 2017 - 04:14:46 EST


On Thu, May 18, 2017 at 10:04:39AM +0200, Markus Trippelsdorf wrote:
> On 2017.05.18 at 09:40 +0200, Peter Zijlstra wrote:
> > On Wed, May 17, 2017 at 07:36:46PM +0200, Markus Trippelsdorf wrote:
> > > Since:
> > > commit cfafcd117da0216520568c195cb2f6cd1980c4bb
> > > Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> > > 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.
> >
> > OK, so how do I get those tests build?
> >
> > I did a checkout of glibc.git
> >
> > glibc$ mkdir build; cd build
> > build$ ../configure --disable-sanity-checks ; make -j40
> > build$ ./nptl/tst-robustpi8
> > -bash: ./nptl/tst-robustpi8: No such file or directory
> >
> > "make tests" doesn't seem to work either even though its a build target
> > listed in the Makefiles.
> >
> > What magic incantation do I need?
>
> Something like:
>
> % ~/glibc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --with-headers=/usr/include --enable-add-ons --enable-kernel=4.10 --with-tls --with-__thread --enable-bind-now --without-gd --without-cvs --disable-profile --disable-multi-arch --disable-werror

I specifically didn't want to set --prefix=/usr etc.. because I didn't
want to run any risk of the thing actually installing and wrecking my
system, I'll try the other bits through.

> % make -j128
> % make -j128 check

make check is failing here:

/usr/local/src/glibc/build/math/test-ldouble-carg.o -MD -MP -MF /usr/local/src/glibc/build/math/test-ldouble-carg.o.dt -MT /usr/local/src/glibc/build/math/test-ldouble-carg.o
/usr/bin/ld: /usr/local/src/glibc/build/math/test-math-iszero.o: relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status

> But I've attached the testcase, so building should be unnecessary.

Thanks..