mirror of
https://github.com/golang/go
synced 2024-11-17 16:04:47 -07:00
cmd/dist: skip race detector test failure for unsupported VMA
Fixes #29948 Change-Id: I01d041655d34a5de32701dec8b360e347593a45d Reviewed-on: https://go-review.googlesource.com/c/go/+/160919 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
a21a6e4461
commit
f84d28b775
20
src/cmd/dist/test.go
vendored
20
src/cmd/dist/test.go
vendored
@ -1103,6 +1103,13 @@ func (t *tester) runPending(nextTest *distTest) {
|
||||
} else {
|
||||
timelog("start", w.dt.name)
|
||||
w.out, w.err = w.cmd.CombinedOutput()
|
||||
if w.err != nil {
|
||||
if isUnsupportedVMASize(w) {
|
||||
timelog("skip", w.dt.name)
|
||||
w.out = []byte(fmt.Sprintf("skipped due to unsupported VMA\n"))
|
||||
w.err = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
timelog("end", w.dt.name)
|
||||
w.end <- true
|
||||
@ -1383,6 +1390,11 @@ func (t *tester) packageHasBenchmarks(pkg string) bool {
|
||||
// raceDetectorSupported is a copy of the function
|
||||
// cmd/internal/sys.RaceDetectorSupported, which can't be used here
|
||||
// because cmd/dist has to be buildable by Go 1.4.
|
||||
// The race detector only supports 48-bit VMA on arm64. But we don't have
|
||||
// a good solution to check VMA size(See https://golang.org/issue/29948)
|
||||
// raceDetectorSupported will always return true for arm64. But race
|
||||
// detector tests may abort on non 48-bit VMA configuration, the tests
|
||||
// will be marked as "skipped" in this case.
|
||||
func raceDetectorSupported(goos, goarch string) bool {
|
||||
switch goos {
|
||||
case "linux":
|
||||
@ -1404,3 +1416,11 @@ func mSanSupported(goos, goarch string) bool {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// isUnsupportedVMASize reports whether the failure is caused by an unsupported
|
||||
// VMA for the race detector (for example, running the race detector on an
|
||||
// arm64 machine configured with 39-bit VMA)
|
||||
func isUnsupportedVMASize(w *work) bool {
|
||||
unsupportedVMA := []byte("unsupported VMA range")
|
||||
return w.dt.name == "race" && bytes.Contains(w.out, unsupportedVMA)
|
||||
}
|
||||
|
@ -6,6 +6,9 @@ package sys
|
||||
|
||||
// RaceDetectorSupported reports whether goos/goarch supports the race
|
||||
// detector. There is a copy of this function in cmd/dist/test.go.
|
||||
// Race detector only supports 48-bit VMA on arm64. But it will always
|
||||
// return true for arm64, because we don't have VMA size information during
|
||||
// the compile time.
|
||||
func RaceDetectorSupported(goos, goarch string) bool {
|
||||
switch goos {
|
||||
case "linux":
|
||||
|
Loading…
Reference in New Issue
Block a user