go: all: test failures with `bad file number` or `exec format error` on solaris-amd64-oraclerel
#!watchflakes
post <- builder == "solaris-amd64-oraclerel" && (log ~ `bad file number` || log ~ `exec format error`)
Issue created automatically to collect these failures.
Example (log):
--- FAIL: TestDefinition (22.48s)
integration_test.go:193: gopls definition a.go:7:2: exited with code 2, want success: true (gopls definition a.go:7:2: exit=2 stdout=<<./a.go:3:6-7: defined here as func f()>> stderr=<<panic: /opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/internal/bug/bug.go:56: internal error reading shared cache: RLock /opt/golang/.cache/gopls/18b62982/analysis/6b/6b316992556c8430def264891a46ec93579ccbc5189907222dcd2b789e667b3c: bad file number
goroutine 2162 [running]:
golang.org/x/tools/internal/bug.Report({0xc000048160, 0xaa}, 0x0)
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/internal/bug/bug.go:71 +0x468
golang.org/x/tools/internal/bug.Errorf({0xf2a0f8?, 0x93ec461a8964f2de?}, {0xc002927c70?, 0x3c7b669e782bcd2d?, 0xee80be?})
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/internal/bug/bug.go:56 +0x3f
golang.org/x/tools/gopls/internal/lsp/cache.analyzeImpl({0x116c950?, 0xc003282190}, 0xc000cf2280, {0xc001d3c350, 0x2, 0x2}, {0xc0007b0790, 0xc})
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/gopls/internal/lsp/cache/analysis.go:454 +0x774
golang.org/x/tools/gopls/internal/lsp/cache.(*snapshot).analyze.func1({0x116c950?, 0xc003282190?}, {0xeda6a0?, 0xc000cf2280?})
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/gopls/internal/lsp/cache/analysis.go:339 +0x5a
golang.org/x/tools/internal/memoize.(*Promise).run.func2.1()
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/internal/memoize/memoize.go:187 +0xa9
runtime/trace.WithRegion({0x116c950?, 0xc003282190?}, {0xc0024f4180, 0x14}, 0xc0005e4f90)
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/go/src/runtime/trace/annotation.go:141 +0xe3
golang.org/x/tools/internal/memoize.(*Promise).run.func2()
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/internal/memoize/memoize.go:180 +0x145
created by golang.org/x/tools/internal/memoize.(*Promise).run
/opt/golang/tmp/workdir-host-solaris-oracle-amd64-oraclerel/gopath/src/golang.org/x/tools/internal/memoize/memoize.go:179 +0x1ea
>>)
About this issue
- Original URL
- State: open
- Created a year ago
- Comments: 33 (15 by maintainers)
(CC @golang/illumos, although to my knowledge we have not seen this failure mode on the
illumos
builder.)I am including
exec format error
failures here as well, though I’m not sure if they are related.syscall.FcntlFlock
accepts the*Flock_t
as a pointer, and only converts it touintptr
directly in the call tosysvicall6
, which is implemented in assembly.If I understand the discussion on #34684 correctly, the fact that
sysvicall6
is implemented in assembly should cause the compiler and runtime to consider itsuintptr
arguments reachable for the duration of the call.CC @golang/release
I’m afraid you may need to update
x/build/dashboard.BuildConfig.buildsRepo
to specialize to module (not just repo). https://cs.opensource.google/go/x/build/+/master:dashboard/builders.go;l=783;drc=c5b0bb2e56eceb3121e2c3e66185e97f704733d6Perhaps someone on the release team knows a better way.
I wonder if it makes more sense to disable gopls testing completely from the platforms we don’t think gopls would work well, and make it clear what platforms are supported in the user documentation. (So, no false promise). My complaint about the platform-based skipped tests is it’s hard to know from the builder state whether the functionality is actually working or not.
If there are users who want to use gopls from such excluded platforms, we need to ask to open issues (or proposal) with support plan/active contribution.
I argue for supporting POSIX (aix darwin linux {free,open,net}bsd illumos solaris) and Windows, but not Plan9. That means we disable any test that flakes on those OSs.
What about Android and iOS? Does even a single person use gopls on those platforms?
I think we can rely on POSIX and Windows for the operations gopls needs. netbsd has been a little flaky on the builders recently, but I can’t tell yet whether that’s a problem with the kernel or just our builder. Let’s keep an eye out for it. Ditto solaris.
I’d really rather not make a memory-based fallback.