Re: Possible regression by ab037dd87a2f (powerpc/vdso: Switch VDSO to generic C implementation.)
flat view
From: Paul Menzel <hidden>
Date: 2021-07-28 12:53:33
Dear Michael, Am 28.07.21 um 14:43 schrieb Michael Ellerman:
Paul Menzel [off-list ref] writes:quoted
Am 28.07.21 um 01:14 schrieb Benjamin Herrenschmidt:quoted
On Tue, 2021-07-27 at 10:45 +0200, Paul Menzel wrote:quoted
quoted
On ppc64le Go 1.16.2 from Ubuntu 21.04 terminates with a segmentation fault [1], and it might be related to *[release-branch.go1.16] runtime: fix crash during VDSO calls on PowerPC* [2], conjecturing that commit ab037dd87a2f (powerpc/vdso: Switch VDSO to generic C implementation.) added in Linux 5.11 causes this. If this is indeed the case, this would be a regression in userspace. Is there a generic fix or should the change be reverted?From the look at the links you posted, this appears to be completely broken assumptions by Go that some registers don't change while calling what essentially are external library functions *while inside those functions* (ie in this case from a signal handler). I suppose it would be possible to build the VDSO with gcc arguments to make it not use r30, but that's just gross...Thank you for looking into this. No idea, if it falls under Linux’ no regression policy or not.Reluctantly yes, I think it does. Though it would have been good if it had been reported to us sooner. It looks like that Go fix is only committed to master, and neither of the latest Go 1.16 or 1.15 releases contain the fix? ie. there's no way for a user to get a working version of Go other than building master?
I heard it is going to be in Go 1.16.7, but I do not know much about Go. Maybe the folks in Cc can chime in.
I'll see if we can work around it in the kernel. Are you able to test a kernel patch if I send you one?
Yes, I could test a Linux kernel patch on ppc64le (POWER 8) running Ubuntu 21.04. Kind regards, Paul