Skip to content

runtime: -quick tests aren't quick with reduced GOMAXPROCS #53818

Closed
ferrmin/go
#430
@bcmills

Description

@bcmills

What version of Go are you using (go version)?

~/go/src$ go version
go version devel go1.19-f89939a7c5 Tue Jul 12 13:46:24 2022 -0400 linux/amd64

Does this issue reproduce with the latest release?

Yes.

What operating system and processor architecture are you using (go env)?

go env Output
~/go/src$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/usr/local/google/home/bcmills/.cache/go-build"
GOENV="/usr/local/google/home/bcmills/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/usr/local/google/home/bcmills/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/usr/local/google/home/bcmills"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/google/home/bcmills/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/google/home/bcmills/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="devel go1.19-f89939a7c5 Tue Jul 12 13:46:24 2022 -0400"
GCCGO="/usr/local/google/home/bcmills/bin/gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="c++"
CGO_ENABLED="1"
GOMOD="/usr/local/google/home/bcmills/go/src/go.mod"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build640773996=/tmp/go-build -gno-record-gcc-switches"

What did you do?

GO_TEST_SHORT=0 go tool dist test

What did you expect to see?

Passing tests.

What did you see instead?

A giant stack trace from a runtime test that timed out (overflowing my terminal's scrollback), followed by some passing maymorestack tests:

…

goroutine 27532570 [GC worker (idle)]:
runtime.gopark(0x3d101c40b34ec?, 0x1?, 0x4f?, 0x48?, 0x0?)
        /usr/local/google/home/bcmills/go/src/runtime/proc.go:363 +0xd6 fp=0xc0001a6f50 sp=0xc0001a6f30 pc=0x43f3b6
runtime.gcBgMarkWorker()
        /usr/local/google/home/bcmills/go/src/runtime/mgc.go:1235 +0xf1 fp=0xc0001a6fe0 sp=0xc0001a6f50 pc=0x4203d1
runtime.goexit()
        /usr/local/google/home/bcmills/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0001a6fe8 sp=0xc0001a6fe0 pc=0x4773e1
created by runtime.gcBgMarkStartWorkers
        /usr/local/google/home/bcmills/go/src/runtime/mgc.go:1159 +0x25

goroutine 2806 [GC worker (idle), 1 minutes]:
runtime.gopark(0x3d0e866c6e3a0?, 0x3?, 0x6b?, 0x73?, 0x0?)
        /usr/local/google/home/bcmills/go/src/runtime/proc.go:363 +0xd6 fp=0xc000050f50 sp=0xc000050f30 pc=0x43f3b6
runtime.gcBgMarkWorker()
        /usr/local/google/home/bcmills/go/src/runtime/mgc.go:1235 +0xf1 fp=0xc000050fe0 sp=0xc000050f50 pc=0x4203d1
runtime.goexit()
        /usr/local/google/home/bcmills/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000050fe8 sp=0xc000050fe0 pc=0x4773e1
created by runtime.gcBgMarkStartWorkers
        /usr/local/google/home/bcmills/go/src/runtime/mgc.go:1159 +0x25
FAIL    runtime 300.087s
FAIL
2022/07/12 14:14:59 Failed: exit status 1

##### maymorestack=mayMoreStackPreempt
ok      runtime 67.672s
ok      reflect 1.315s
ok      sync    1.333s

##### maymorestack=mayMoreStackMove
skipped due to earlier error
skipped due to earlier error
skipped due to earlier error
go tool dist: FAILED

From comparing the output with a linux-amd64-longtest run on the build dashboard, I see that the test that timed out is probably this one (taken from the build dashboard):

##### GOMAXPROCS=2 runtime -cpu=1,2,4 -quick
ok  	runtime	638.620s

Note that although the dashboard builder sets GO_TEST_TIMEOUT_SCALE=5, this is the only test in the dashboard log that took more than 3 minutes.

Since the test explicitly sets the -quick flag, I expect it to instead be, well, “quick”. 😅
I suspect that something in the test is creating a hard-coded amount of concurrent work, when it should instead be scaling the work by GOMAXPROCS.

(attn @golang/runtime)

Metadata

Metadata

Labels

FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.TestingAn issue that has been verified to require only test changes, not just a test failure.compiler/runtimeIssues related to the Go compiler and/or runtime.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions