Re: [BUG 4.4.178] x86_64 compat mode futexes broken

From: Nathan Chancellor
Date: Thu Jun 06 2019 - 19:15:46 EST


On Thu, Jun 06, 2019 at 09:11:43PM +0000, Joe Korty wrote:
> Starting with 4.4.178, the LTP test
>
> pthread_cond_wait/2-3
>
> when compiled on x86_64 with 'gcc -m32', started failing. It generates this log output:
>
> [16:18:38]Implementation supports the MONOTONIC CLOCK but option is disabled in test.
> [16:18:38]Test starting
> [16:18:38] Process-shared primitive will be tested
> [16:18:38] Alternative clock for cond will be tested
> [16:18:38]Test 2-3.c FAILED: The child did not own the mutex inside the cleanup handler
>

What is the exact build command + test case command? I'd like to
reproduce this myself.

> A git bisection between 4.4.177..178 shows that this commit is the culprit:
>
> Git-Commit: 79739ad2d0ac5787a15a1acf7caaf34cd95bbf3c
> Author: Alistair Strachan <astrachan@xxxxxxxxxx>
> Subject: [PATCH] x86: vdso: Use $LD instead of $CC to link
>

Have you tested 4.4.180? There were two subsequent fixes to this patch
in 4.4:

485d15db01ca ("kbuild: simplify ld-option implementation")
07d35512e494 ("x86/vdso: Pass --eh-frame-hdr to the linker")

> And, indeed, when I back this patch out of 4.4.178 proper, the above test
> passes again.
>
> Please consider backing this patch out of linux-4.4.y, and from master, and from
> any other linux branch it has been backported to.
>

So this is broken in mainline too?

> PS: In backing it out of 4.4.178, I first backed out
>
> 7c45b45fd6e928c9ce275c32f6fa98d317e6f5ee
>
> This is a follow-on vdso patch which collides with the
> patch we are interested in removing. As it claims to be
> only removing redundant code, it probably should never
> have been backported in the first place.

While it is redundant for ld.bfd, it causes a build failure with the
release version of ld.lld:

https://github.com/ClangBuiltLinux/linux/issues/31

Cheers,
Nathan