go: runtime: frequent timeouts in {build,runBuilt,run}TestProg
2021-02-19T00:04:42-1c659f2/linux-ppc64le-buildlet 2021-02-19T00:04:30-b6379f1/linux-ppc64le-buildlet 2021-02-19T00:04:22-09e059a/linux-ppc64le-buildlet 2021-02-19T00:02:06-01f05d8/linux-ppc64le-buildlet 2021-02-19T00:01:17-e7ee3c1/linux-ppc64le-buildlet 2021-02-16T22:18:37-8482559/linux-ppc64le-buildlet 2020-12-15T21:45:05-731bb54/linux-ppc64le-buildlet 2020-12-15T21:04:49-129bb19/linux-ppc64le-buildlet 2020-12-15T21:01:37-685a322/linux-ppc64le-buildlet 2020-12-15T20:58:17-3d64678/linux-ppc64le-buildlet 2020-12-15T20:55:01-7cdc84a/linux-ppc64le-buildlet 2020-12-14T22:39:04-663cd86/linux-ppc64le-buildlet 2020-12-14T21:09:33-d06794d/linux-ppc64le-buildlet 2020-12-14T18:06:06-828746e/linux-ppc64le-buildlet
It’s not clear to me whether the test is hung or just slow. Perhaps we should set a GO_TEST_TIMEOUT_SCALE
on this builder and see if that helps?
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 28 (25 by maintainers)
Commits related to this issue
- dashboard: increase GO_TEST_TIMEOUT_SCALE for ppc64 builders This sets the GO_TEST_TIMEOUT_SCALE=2 for ppc64 builders. The runtime tests have been timing out intermittently on ppc64le power8; it has ... — committed to golang/build by laboger 3 years ago
- runtime: don't serialize all builds in test Permit a test whose program is already built to run immediately, rather than waiting for another test to complete its build. For #44422 Change-Id: I2d1b3... — committed to golang/go by ianlancetaylor 3 years ago
- runtime: remove -tags=threadprof in tests Use an enviroment variable rather than a build tag to control starting a busy loop thread when testprogcgo starts. This lets us skip another build that invok... — committed to jproberts/go by ianlancetaylor 2 years ago
A much simpler thing we could do is to increase the timeout for the runtime test. We already do this for the cmd/go tests [1] and I don’t think that’s any more artificial than factoring the cgo prog tests out into their own test.
[1] Or, at least, we try to. The code is weird.
Since we don’t have a long builder for these, this seems like it would lose important test coverage.
This seems feasible. As you pointed out, this would give it its own timeout. It would require some nontrivial refactoring to pull out the testprog infrastructure, but we could do that.
On a Solaris system I have access to, clearing the cache and running
go test -test.short -test.v -test.count=1 runtime
takes 38.5 seconds. The last two tests to complete areTestCgoExternalThreadSIGPROF
andTestCgoExternalThreadSignal
which both take about 13 seconds. One test is building the test program, and the other is waiting for that build to complete (they both build the same test program). Actually running the test program takes a fraction of a second.This is consistent with the builder failure just being slow and running out of time, especially since cmd/dist will be running other tests in parallel.
In the 2021-11-22 timeout the only tests still running are two waiting for
go build -tags=threadprof testprogcgo
to complete.After CL 364654 the time required to run the runtime tests on a Solaris system I have access to drops from 70 seconds to 51 seconds. CL 364755, if submitted, will drop it farther. I don’t know if timeouts are the problem here, but they may be part of it. But there may also be a different problem.