mirror of
https://github.com/golang/go
synced 2024-11-17 23:04:56 -07:00
runtime: don't mlock on Ubuntu 5.4 systems
For #35777 For #37436 Fixes #40184 Change-Id: I68561497d9258e994d1c6c48d4fb41ac6130ee3a Reviewed-on: https://go-review.googlesource.com/c/go/+/244059 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
11f92e9dae
commit
71218dbc40
@ -7,7 +7,10 @@
|
||||
|
||||
package runtime
|
||||
|
||||
import "runtime/internal/atomic"
|
||||
import (
|
||||
"runtime/internal/atomic"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
//go:noescape
|
||||
func uname(utsname *new_utsname) int
|
||||
@ -55,6 +58,36 @@ func osArchInit() {
|
||||
return
|
||||
}
|
||||
|
||||
if major == 5 && minor == 4 && patch < 2 {
|
||||
// All 5.4 versions of Ubuntu are patched.
|
||||
procVersion := []byte("/proc/version\000")
|
||||
f := open(&procVersion[0], _O_RDONLY, 0)
|
||||
if f >= 0 {
|
||||
var buf [512]byte
|
||||
p := noescape(unsafe.Pointer(&buf[0]))
|
||||
n := read(f, p, int32(len(buf)))
|
||||
closefd(f)
|
||||
|
||||
needle := []byte("Ubuntu")
|
||||
contains:
|
||||
for i, c := range buf[:n] {
|
||||
if c != needle[0] {
|
||||
continue
|
||||
}
|
||||
if int(n)-i < len(needle) {
|
||||
break
|
||||
}
|
||||
for j, c2 := range needle {
|
||||
if c2 != buf[i+j] {
|
||||
continue contains
|
||||
}
|
||||
}
|
||||
// This is an Ubuntu system.
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if major == 5 && (minor == 2 || minor == 3 && patch < 15 || minor == 4 && patch < 2) {
|
||||
gsignalInitQuirk = mlockGsignal
|
||||
if m0.gsignal != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user