]> Cypherpunks repositories - gostls13.git/commit
runtime: revert signal stack mlocking
authorAustin Clements <austin@google.com>
Fri, 31 Jul 2020 19:58:00 +0000 (15:58 -0400)
committerAustin Clements <austin@google.com>
Thu, 13 Aug 2020 02:17:17 +0000 (02:17 +0000)
commit92bda33d2771a9b12868d9025f113538fa7a84de
treee6a177cfe289630c07d32d36b7be7e140d7809a7
parentb2353174db1349f15113416b4df2a833db6058a6
runtime: revert signal stack mlocking

Go 1.14 included a (rather awful) workaround for a Linux kernel bug
that corrupted vector registers on x86 CPUs during signal delivery
(https://bugzilla.kernel.org/show_bug.cgi?id=205663). This bug was
introduced in Linux 5.2 and fixed in 5.3.15, 5.4.2 and all 5.5 and
later kernels. The fix was also back-ported by major distros. This
workaround was necessary, but had unfortunate downsides, including
causing Go programs to exceed the mlock ulimit in many configurations
(#37436).

We're reasonably confident that by the Go 1.16 release, the number of
systems running affected kernels will be vanishingly small. Hence,
this CL removes this workaround.

This effectively reverts CLs 209597 (version parser), 209899 (mlock
top of signal stack), 210299 (better failure message), 223121 (soft
mlock failure handling), and 244059 (special-case patched Ubuntu
kernels). The one thing we keep is the osArchInit function. It's empty
everywhere now, but is a reasonable hook to have.

Updates #35326, #35777 (the original register corruption bugs).
Updates #40184 (request to revert in 1.15).
Fixes #35979.

Change-Id: Ie213270837095576f1f3ef46bf3de187dc486c50
Reviewed-on: https://go-review.googlesource.com/c/go/+/246200
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/defs_linux_386.go
src/runtime/defs_linux_amd64.go
src/runtime/export_test.go
src/runtime/os_linux.go
src/runtime/os_linux_x86.go
src/runtime/panic.go
src/runtime/string.go
src/runtime/string_test.go
src/runtime/sys_linux_386.s
src/runtime/sys_linux_amd64.s