gopls version
0.16.2
go env
GO111MODULE=''
GOARCH='arm64'
GOBIN='/Users/matthew/.local/share/mise/installs/go/1.22.3/bin'
GOCACHE='/Users/matthew/Library/Caches/go-build'
GOENV='/Users/matthew/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS='-buildvcs=false'
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/matthew/go/pkg/mod'
GONOPROXY='github.com/customerio/*'
GONOSUMDB='github.com/customerio/*'
GOOS='darwin'
GOPATH='/Users/matthew/go'
GOPRIVATE='github.com/customerio/*'
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Users/matthew/.local/share/mise/installs/go/1.22.3'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/matthew/.local/share/mise/installs/go/1.22.3/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.22.3'
GCCGO='gccgo'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/Users/matthew/services/go.mod'
GOWORK=''
CGO_CFLAGS='-I/Users/matthew/.local/lib/foundationdb/7.3.26/usr/local/include'
CGO_CPPFLAGS='-I/Users/matthew/.local/lib/foundationdb/7.3.26/usr/local/include'
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-L/Users/matthew/.local/lib/foundationdb/7.3.26/usr/local/lib'
PKG_CONFIG='/opt/homebrew/bin/pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/md/zrgmx7p53159906_lsrbfykc0000gn/T/go-build2676139738=/tmp/go-build -gno-record-gcc-switches -fno-common'
What did you do?
open cursor on a go project. goplus is constantly at 200-400% cpu, even if I'm not doing anything.
What did you see happen?
high cpu usage.
What did you expect to see?
not high cpu usage.
Editor and settings
No response
Logs
No response
Comment From: gabyhelp
Related Issues and Documentation
- x/tools/gopls: massive cpu and memory usage #46897 (closed)
- x/tools/gopls: go list causes 100% CPU load #39116 (closed)
- x/tools/gopls: high cpu usage when make changes in package which have some cgo package dependents #50151
- x/tools/gopls: 100% CPU utilization with soft links #40342 (closed)
- x/tools/gopls: windows cpu use 100% #66945 (closed)
- x/tools/gopls: set a deadline on `go list` call in the initial workspace load #42132 (closed)
- x/tools/gopls: too many memory usage #37759 (closed)
- x/tools/gopls: "stuck" at 100% CPU #34569 (closed)
- x/tools/gopls: high memory consumption when used with a monorepo #37670 (closed)
- x/tools/gopls: Using memory for unknown reason #44994 (closed)
(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)
Comment From: adonovan
Is the workspace open source code? If so, can you tell us what repo/commit triggers the bug?
Does it do this only when you open certain files?
Does it eventually stabilize?
How large is the repository?
Can you share the output of gopls -stats
?
Thanks.
Comment From: newhook
The source code is closed source and it is ~1mio loc. The issue doesn't appear to be related to open files since it occurs even if I have no files open. On startup I can see it running go alot (I guess running go list), and then evetually that stops and It stablizes at 400% CPU.
Comment From: adonovan
Were you able to get the output of gopls -stats
?
Comment From: newhook
gopls stats
Initializing workspace... done (32.042606375s)
Gathering bug reports... done (133.127417ms)
Querying memstats... done (441.686209ms)
Querying workspace stats... done (24.08725ms)
Collecting directory info... done (791.441333ms)
{
"BugReports": [],
"CacheDir": "/Users/matthew/Library/Caches/gopls/81dd27fb",
"DirStats": {
"Files": 11331,
"TestdataFiles": 2787,
"GoFiles": 4336,
"ModFiles": 2,
"Dirs": 2306
},
"GOARCH": "arm64",
"GOOS": "darwin",
"GOPACKAGESDRIVER": "",
"GOPLSCACHE": "",
"GoVersion": "go1.22.3",
"GoplsVersion": "v0.16.2",
"InitialWorkspaceLoadDuration": "32.042606375s",
"MemStats": {
"HeapAlloc": 699766776,
"HeapInUse": 1085841408,
"TotalAlloc": 6352233008
},
"WorkspaceStats": {
"Files": {
"Total": 10780,
"Largest": 1379000,
"Errs": 0
},
"Views": [
{
"GoCommandVersion": "go1.22.3",
"AllPackages": {
"Packages": 3705,
"LargestPackage": 155,
"CompiledGoFiles": 23115,
"Modules": 255
},
"WorkspacePackages": {
"Packages": 972,
"LargestPackage": 91,
"CompiledGoFiles": 4920,
"Modules": 1
},
"Diagnostics": 0
}
]
}
}
Comment From: findleyr
Gopls should (eventually) stop consuming CPU, once it's done indexing your workspace.
Does the CPU spike after every keystroke?
If so, I can help you capture a profile.
Comment From: newhook
Gopls should (eventually) stop consuming CPU, once it's done indexing your workspace.
Yes, but it does not. It stays at 400% CPU all the time, whether or not I'm doing anything. Even after hours of not doing anything.
Comment From: adonovan
Could you send the process a SIGABRT after the initial workspace load (a minute after startup should be plenty) and share the stack trace it prints to stderr? That would give us a clue about what loops are active.
Comment From: newhook
I've run goprof manually and attached cursor to that. Any other flags I should provide to gopls to get more debugging information
$ gopls --port=9000 -v -rpc.trace=true --debug=localhost:6060
Right now gopls is using very high CPU. Looking at the ps shows me that gopls has forked go mod tidy of the following module file (in a temporary directory).
module matthew
go 1.20
require (
github.com/bitly/go-simplejson v0.5.1-0.20200416141419-39a59b1b2866 // indirect
github.com/coreos/go-semver v0.3.0 // indirect
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
github.com/customerio/gaia/discovery v0.0.0-20230710120525-c5ab9abfcf8c // indirect
github.com/customerio/gaia/kmq v0.0.0-20230721153758-a6e29089c100 // indirect
github.com/customerio/gaia/libraries v0.0.0-20230710120525-c5ab9abfcf8c // indirect
github.com/customerio/httprouter v1.2.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/planetscale/vtprotobuf v0.4.0 // indirect
github.com/tidwall/gjson v1.14.4 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
github.com/zeebo/errs v1.2.2 // indirect
go.etcd.io/etcd/api/v3 v3.5.9 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect
go.etcd.io/etcd/client/v3 v3.5.9 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/net v0.9.0 // indirect
golang.org/x/sync v0.2.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/text v0.9.0 // indirect
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
google.golang.org/grpc v1.55.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
storj.io/drpc v0.0.33 // indirect
)
Looking at the stacks:
matthew@Matthew-Newhook ~ % curl 'localhost:6060/debug/pprof/goroutine?debug=1'
goroutine profile: total 28
1 @ 0x1005a903c 0x1005e5d64 0x1008fe064 0x1008fde80 0x1008fb2b8 0x100d79a94 0x100d7a3d4 0x100860618 0x1008621f4 0x100863a2c 0x10085f1e8 0x1005ecca4
# 0x1005e5d63 runtime/pprof.runtime_goroutineProfileWithLabels+0x23 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/mprof.go:1079
# 0x1008fe063 runtime/pprof.writeRuntimeProfile+0xb3 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/pprof/pprof.go:774
# 0x1008fde7f runtime/pprof.writeGoroutine+0x4f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/pprof/pprof.go:734
# 0x1008fb2b7 runtime/pprof.(*Profile).WriteTo+0x147 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/pprof/pprof.go:369
# 0x100d79a93 net/http/pprof.handler.ServeHTTP+0x443 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/pprof/pprof.go:267
# 0x100d7a3d3 net/http/pprof.Index+0xc3 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/pprof/pprof.go:384
# 0x100860617 net/http.HandlerFunc.ServeHTTP+0x37 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/server.go:2166
# 0x1008621f3 net/http.(*ServeMux).ServeHTTP+0x1a3 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/server.go:2683
# 0x100863a2b net/http.serverHandler.ServeHTTP+0xbb /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/server.go:3137
# 0x10085f1e7 net/http.(*conn).serve+0x507 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/server.go:2039
1 @ 0x1005b3108 0x10057d964 0x10057d524 0x100e79a64 0x1008bcfa0 0x1005ecca4
# 0x100e79a63 golang.org/x/tools/gopls/internal/lsprpc.(*streamServer).ServeStream+0x733 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/lsprpc/lsprpc.go:93
# 0x1008bcf9f golang.org/x/tools/internal/jsonrpc2.Serve.func3+0xef /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/jsonrpc2/serve.go:126
1 @ 0x1005b3108 0x10057d964 0x10057d544 0x1008ef9a8 0x1005ecca4
# 0x1008ef9a7 golang.org/x/tools/gopls/internal/protocol.LogEvent.func1.1+0x47 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/protocol/context.go:47
1 @ 0x1005b3108 0x1005acb08 0x1005e61a0 0x10062ba08 0x10062cd50 0x10062cd41 0x100635e10 0x100635e05 0x10068efa0 0x100625e4c 0x1006366ec 0x1006366a9 0x100636620 0x100625d98 0x1006985b4 0x100698591 0x100699044 0x1005ecca4
# 0x1005e619f internal/poll.runtime_pollWait+0x9f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/netpoll.go:345
# 0x10062ba07 internal/poll.(*pollDesc).wait+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:84
# 0x10062cd4f internal/poll.(*pollDesc).waitRead+0x1ff /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:89
# 0x10062cd40 internal/poll.(*FD).Read+0x1f0 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_unix.go:164
# 0x100635e0f os.(*File).read+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:29
# 0x100635e04 os.(*File).Read+0x64 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:118
# 0x10068ef9f bytes.(*Buffer).ReadFrom+0x8f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/bytes/buffer.go:211
# 0x100625e4b io.copyBuffer+0x14b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:415
# 0x1006366eb io.Copy+0x5b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:388
# 0x1006366a8 os.genericWriteTo+0x18 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:269
# 0x10063661f os.(*File).WriteTo+0x5f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:247
# 0x100625d97 io.copyBuffer+0x97 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:411
# 0x1006985b3 io.Copy+0x43 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:388
# 0x100698590 os/exec.(*Cmd).writerDescriptor.func1+0x20 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/exec/exec.go:577
# 0x100699043 os/exec.(*Cmd).Start.func2+0x33 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/exec/exec.go:724
1 @ 0x1005b3108 0x1005acb08 0x1005e61a0 0x10062ba08 0x10062cd50 0x10062cd41 0x100635e10 0x100635e05 0x10068efa0 0x100625e4c 0x1006366ec 0x1006366a9 0x100636620 0x100625d98 0x100aede1c 0x100aeddfd 0x1005ecca4
# 0x1005e619f internal/poll.runtime_pollWait+0x9f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/netpoll.go:345
# 0x10062ba07 internal/poll.(*pollDesc).wait+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:84
# 0x10062cd4f internal/poll.(*pollDesc).waitRead+0x1ff /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:89
# 0x10062cd40 internal/poll.(*FD).Read+0x1f0 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_unix.go:164
# 0x100635e0f os.(*File).read+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:29
# 0x100635e04 os.(*File).Read+0x64 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:118
# 0x10068ef9f bytes.(*Buffer).ReadFrom+0x8f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/bytes/buffer.go:211
# 0x100625e4b io.copyBuffer+0x14b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:415
# 0x1006366eb io.Copy+0x5b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:388
# 0x1006366a8 os.genericWriteTo+0x18 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:269
# 0x10063661f os.(*File).WriteTo+0x5f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:247
# 0x100625d97 io.copyBuffer+0x97 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:411
# 0x100aede1b io.Copy+0x4b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/io/io.go:388
# 0x100aeddfc golang.org/x/tools/internal/gocommand.runCmdContext.func1+0x2c /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:326
1 @ 0x1005b3108 0x1005acb08 0x1005e61a0 0x10062ba08 0x10062cd50 0x10062cd41 0x100759838 0x100765c54 0x1007e02c8 0x1007e0ed0 0x1007e12d4 0x1007e1660 0x1008bd484 0x1008ba588 0x1005ecca4
# 0x1005e619f internal/poll.runtime_pollWait+0x9f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/netpoll.go:345
# 0x10062ba07 internal/poll.(*pollDesc).wait+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:84
# 0x10062cd4f internal/poll.(*pollDesc).waitRead+0x1ff /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:89
# 0x10062cd40 internal/poll.(*FD).Read+0x1f0 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_unix.go:164
# 0x100759837 net.(*netFD).Read+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/fd_posix.go:55
# 0x100765c53 net.(*conn).Read+0x33 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/net.go:179
# 0x1007e02c7 bufio.(*Reader).fill+0xf7 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/bufio/bufio.go:110
# 0x1007e0ecf bufio.(*Reader).ReadSlice+0x2f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/bufio/bufio.go:376
# 0x1007e12d3 bufio.(*Reader).collectFragments+0x63 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/bufio/bufio.go:451
# 0x1007e165f bufio.(*Reader).ReadString+0x1f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/bufio/bufio.go:498
# 0x1008bd483 golang.org/x/tools/internal/jsonrpc2.(*headerStream).Read+0xa3 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/jsonrpc2/stream.go:110
# 0x1008ba587 golang.org/x/tools/internal/jsonrpc2.(*conn).run+0x87 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/jsonrpc2/conn.go:195
1 @ 0x1005b3108 0x1005acb08 0x1005e61a0 0x10062ba08 0x100630490 0x100630481 0x10075b418 0x10076e408 0x10076d67c 0x100863dd8 0x100d884e4 0x100d884e5 0x1005ecca4
# 0x1005e619f internal/poll.runtime_pollWait+0x9f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/netpoll.go:345
# 0x10062ba07 internal/poll.(*pollDesc).wait+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:84
# 0x10063048f internal/poll.(*pollDesc).waitRead+0x24f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:89
# 0x100630480 internal/poll.(*FD).Accept+0x240 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_unix.go:611
# 0x10075b417 net.(*netFD).accept+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/fd_unix.go:172
# 0x10076e407 net.(*TCPListener).accept+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/tcpsock_posix.go:159
# 0x10076d67b net.(*TCPListener).Accept+0x2b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/tcpsock.go:327
# 0x100863dd7 net/http.(*Server).Serve+0x2a7 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/server.go:3255
# 0x100d884e3 net/http.Serve+0x983 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/server.go:2794
# 0x100d884e4 golang.org/x/tools/gopls/internal/debug.(*Instance).Serve.func1+0x984 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/debug/serve.go:479
1 @ 0x1005b3108 0x1005acb08 0x1005e61a0 0x10062ba08 0x100630490 0x100630481 0x10075b418 0x10076e408 0x10076d67c 0x1008bd260 0x1005ecca4
# 0x1005e619f internal/poll.runtime_pollWait+0x9f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/netpoll.go:345
# 0x10062ba07 internal/poll.(*pollDesc).wait+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:84
# 0x10063048f internal/poll.(*pollDesc).waitRead+0x24f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:89
# 0x100630480 internal/poll.(*FD).Accept+0x240 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_unix.go:611
# 0x10075b417 net.(*netFD).accept+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/fd_unix.go:172
# 0x10076e407 net.(*TCPListener).accept+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/tcpsock_posix.go:159
# 0x10076d67b net.(*TCPListener).Accept+0x2b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/tcpsock.go:327
# 0x1008bd25f golang.org/x/tools/internal/jsonrpc2.Serve.func1+0x8f /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/jsonrpc2/serve.go:76
1 @ 0x1005b3108 0x1005c6524 0x1008bca34 0x1008bc644 0x100e90e74 0x1009080c8 0x100e81d74 0x1009080c8 0x100907acc 0x100e9aa50 0x1005b2cac 0x1005ecca4
# 0x1008bca33 golang.org/x/tools/internal/jsonrpc2.Serve+0x233 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/jsonrpc2/serve.go:112
# 0x1008bc643 golang.org/x/tools/internal/jsonrpc2.ListenAndServe+0x123 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/jsonrpc2/serve.go:61
# 0x100e90e73 golang.org/x/tools/gopls/internal/cmd.(*Serve).Run+0x3e3 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cmd/serve.go:134
# 0x1009080c7 golang.org/x/tools/internal/tool.Run+0x4d7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/tool/tool.go:192
# 0x100e81d73 golang.org/x/tools/gopls/internal/cmd.(*Application).Run+0x103 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cmd/cmd.go:239
# 0x1009080c7 golang.org/x/tools/internal/tool.Run+0x4d7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/tool/tool.go:192
# 0x100907acb golang.org/x/tools/internal/tool.Main+0xfb /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/tool/tool.go:93
# 0x100e9aa4f main.main+0x11f /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/main.go:35
# 0x1005b2cab runtime.main+0x28b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/proc.go:271
1 @ 0x1005b3108 0x1005c6524 0x100aed764 0x100aed1a0 0x100aec238 0x100aebcf8 0x100aeba24 0x100aeb4dc 0x100d2db50 0x100d2d758 0x100c78570 0x100907258 0x100c784c4 0x1005ecca4
# 0x100aed763 golang.org/x/tools/internal/gocommand.runCmdContext+0x403 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:399
# 0x100aed19f golang.org/x/tools/internal/gocommand.(*Invocation).run+0xd9f /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:289
# 0x100aec237 golang.org/x/tools/internal/gocommand.(*Invocation).runWithFriendlyError+0x37 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:188
# 0x100aebcf7 golang.org/x/tools/internal/gocommand.(*Runner).runConcurrent+0xf7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:125
# 0x100aeba23 golang.org/x/tools/internal/gocommand.(*Runner).RunRaw+0x223 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:99
# 0x100aeb4db golang.org/x/tools/internal/gocommand.(*Runner).Run+0x20b /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:75
# 0x100d2db4f golang.org/x/tools/gopls/internal/cache.modTidyImpl+0x36f /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cache/mod_tidy.go:121
# 0x100d2d757 golang.org/x/tools/gopls/internal/cache.(*Snapshot).ModTidy.func1+0x47 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cache/mod_tidy.go:81
# 0x100c7856f golang.org/x/tools/internal/memoize.(*Promise).run.func2.1+0x8f /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/memoize/memoize.go:187
# 0x100907257 runtime/trace.WithRegion+0xc7 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/trace/annotation.go:141
# 0x100c784c3 golang.org/x/tools/internal/memoize.(*Promise).run.func2+0x103 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/memoize/memoize.go:180
1 @ 0x1005b3108 0x1005c6524 0x100c58bec 0x1005ecca4
# 0x100c58beb golang.org/x/tools/gopls/internal/filecache.gc+0xbb /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/filecache/filecache.go:544
1 @ 0x1005b3108 0x1005c6524 0x100c718ec 0x100c666cc 0x100d24940 0x100d238ec 0x1005ecca4
# 0x100c718eb golang.org/x/tools/internal/imports.(*ModuleResolver).scan+0x3bb /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/imports/mod.go:648
# 0x100c666cb golang.org/x/tools/internal/imports.PrimeCache+0x6b /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/imports/fix.go:748
# 0x100d2493f golang.org/x/tools/gopls/internal/cache.(*importsState).refreshProcessEnv+0x1bf /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cache/imports.go:245
# 0x100d238eb golang.org/x/tools/gopls/internal/cache.(*refreshTimer).schedule.func1+0x11b /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cache/imports.go:73
1 @ 0x1005b3108 0x1005c6524 0x100c788bc 0x100c78328 0x100c77fec 0x100d2d56c 0x100d2d309 0x100e15fa0 0x100e15c30 0x10069c3f8 0x1005ecca4
# 0x100c788bb golang.org/x/tools/internal/memoize.(*Promise).wait+0xeb /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/memoize/memoize.go:218
# 0x100c78327 golang.org/x/tools/internal/memoize.(*Promise).run+0x1b7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/memoize/memoize.go:209
# 0x100c77feb golang.org/x/tools/internal/memoize.(*Promise).Get+0x17b /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/memoize/memoize.go:154
# 0x100d2d56b golang.org/x/tools/gopls/internal/cache.(*Snapshot).awaitPromise+0x55b /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cache/snapshot.go:211
# 0x100d2d308 golang.org/x/tools/gopls/internal/cache.(*Snapshot).ModTidy+0x2f8 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cache/mod_tidy.go:92
# 0x100e15f9f golang.org/x/tools/gopls/internal/mod.ModTidyDiagnostics+0x5f /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/mod/diagnostics.go:116
# 0x100e15c2f golang.org/x/tools/gopls/internal/mod.collectDiagnostics.func1+0x8f /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/mod/diagnostics.go:78
# 0x10069c3f7 golang.org/x/sync/errgroup.(*Group).Go.func1+0x57 /Users/matthew/go/pkg/mod/golang.org/x/sync@v0.8.0/errgroup/errgroup.go:78
1 @ 0x1005b3108 0x1005c6524 0x100d34338 0x1005ecca4
# 0x100d34337 golang.org/x/tools/gopls/internal/cache.(*parseCache).gc+0xa7 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/cache/parse_cache.go:262
1 @ 0x1005b3108 0x1005c7368 0x1005c7345 0x1005e7d8c 0x1005f9904 0x10069c28c 0x100e15b34 0x100e1561c 0x100e604c0 0x1005ecca4
# 0x1005e7d8b sync.runtime_Semacquire+0x2b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sema.go:62
# 0x1005f9903 sync.(*WaitGroup).Wait+0x73 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/sync/waitgroup.go:116
# 0x10069c28b golang.org/x/sync/errgroup.(*Group).Wait+0x2b /Users/matthew/go/pkg/mod/golang.org/x/sync@v0.8.0/errgroup/errgroup.go:56
# 0x100e15b33 golang.org/x/tools/gopls/internal/mod.collectDiagnostics+0x2c3 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/mod/diagnostics.go:91
# 0x100e1561b golang.org/x/tools/gopls/internal/mod.TidyDiagnostics+0x7b /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/mod/diagnostics.go:42
# 0x100e604bf golang.org/x/tools/gopls/internal/server.(*server).diagnose.func3+0x5f /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/server/diagnostics.go:426
1 @ 0x1005b3108 0x1005c7368 0x1005c7345 0x1005e7d8c 0x1005f9904 0x100e5f994 0x100e5e8d4 0x100e66a24 0x1005ecca4
# 0x1005e7d8b sync.runtime_Semacquire+0x2b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sema.go:62
# 0x1005f9903 sync.(*WaitGroup).Wait+0x73 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/sync/waitgroup.go:116
# 0x100e5f993 golang.org/x/tools/gopls/internal/server.(*server).diagnose+0xa33 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/server/diagnostics.go:519
# 0x100e5e8d3 golang.org/x/tools/gopls/internal/server.(*server).diagnoseSnapshot+0x223 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/server/diagnostics.go:231
# 0x100e66a23 golang.org/x/tools/gopls/internal/server.(*server).addFolders.func3+0x53 /Users/matthew/go/pkg/mod/golang.org/x/tools/gopls@v0.16.2/internal/server/general.go:338
1 @ 0x1005e8b98 0x100601280 0x100638e5c 0x100638de5 0x100636b60 0x100c6207c 0x100c62065 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x10060127f syscall.Open+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1162
# 0x100638e5b os.open+0xdb /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_open_unix.go:15
# 0x100638de4 os.openFileNolog+0x64 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_unix.go:272
# 0x100636b5f os.OpenFile+0x3f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:374
# 0x100c6207b os.Open+0x57b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:354
# 0x100c62064 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x564 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:287
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x100601280 0x100638e5c 0x100638de5 0x100636b60 0x100c6207c 0x100c62065 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x10060127f syscall.Open+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1162
# 0x100638e5b os.open+0xdb /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_open_unix.go:15
# 0x100638de4 os.openFileNolog+0x64 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_unix.go:272
# 0x100636b5f os.OpenFile+0x3f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:374
# 0x100c6207b os.Open+0x57b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:354
# 0x100c62064 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x564 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:287
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x100601280 0x100638e5c 0x100638de5 0x100636b60 0x100c6207c 0x100c62065 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x10060127f syscall.Open+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1162
# 0x100638e5b os.open+0xdb /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_open_unix.go:15
# 0x100638de4 os.openFileNolog+0x64 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_unix.go:272
# 0x100636b5f os.OpenFile+0x3f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:374
# 0x100c6207b os.Open+0x57b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:354
# 0x100c62064 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x564 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:287
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x100601280 0x100638e5c 0x100638de5 0x100636b60 0x100c6207c 0x100c62065 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x10060127f syscall.Open+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1162
# 0x100638e5b os.open+0xdb /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_open_unix.go:15
# 0x100638de4 os.openFileNolog+0x64 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_unix.go:272
# 0x100636b5f os.OpenFile+0x3f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:374
# 0x100c6207b os.Open+0x57b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:354
# 0x100c62064 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x564 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:287
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x100602778 0x100638cd4 0x100638cc5 0x100638bc1 0x100638f50 0x100636b60 0x100c6207c 0x100c62065 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x100602777 syscall.Fstat+0x37 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1897
# 0x100638cd3 os.newFile.func1+0x223 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_unix.go:188
# 0x100638cc4 os.ignoringEINTR+0x214 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:251
# 0x100638bc0 os.newFile+0x110 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_unix.go:187
# 0x100638f4f os.openFileNolog+0x1cf /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_unix.go:301
# 0x100636b5f os.OpenFile+0x3f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:374
# 0x100c6207b os.Open+0x57b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file.go:354
# 0x100c62064 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x564 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:287
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
1 @ 0x1005e8b98 0x1006029f0 0x10063b460 0x10063b451 0x10063b441 0x10063afa0 0x100c61ba8 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x1006029ef syscall.Stat+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1963
# 0x10063b45f os.statNolog.func1+0x4f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:32
# 0x10063b450 os.ignoringEINTR+0x40 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:251
# 0x10063b440 os.statNolog+0x30 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:31
# 0x10063af9f os.Stat+0x2f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat.go:13
# 0x100c61ba7 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0xa7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:224
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x1006029f0 0x10063b460 0x10063b451 0x10063b441 0x10063afa0 0x100c61ba8 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x1006029ef syscall.Stat+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1963
# 0x10063b45f os.statNolog.func1+0x4f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:32
# 0x10063b450 os.ignoringEINTR+0x40 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:251
# 0x10063b440 os.statNolog+0x30 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:31
# 0x10063af9f os.Stat+0x2f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat.go:13
# 0x100c61ba7 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0xa7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:224
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x1006029f0 0x10063b460 0x10063b451 0x10063b441 0x10063afa0 0x100c61ba8 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x1006029ef syscall.Stat+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1963
# 0x10063b45f os.statNolog.func1+0x4f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:32
# 0x10063b450 os.ignoringEINTR+0x40 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:251
# 0x10063b440 os.statNolog+0x30 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:31
# 0x10063af9f os.Stat+0x2f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat.go:13
# 0x100c61ba7 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0xa7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:224
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x1006029f0 0x10063b460 0x10063b451 0x10063b441 0x10063afa0 0x100c61ba8 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x1006029ef syscall.Stat+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1963
# 0x10063b45f os.statNolog.func1+0x4f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:32
# 0x10063b450 os.ignoringEINTR+0x40 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:251
# 0x10063b440 os.statNolog+0x30 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:31
# 0x10063af9f os.Stat+0x2f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat.go:13
# 0x100c61ba7 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0xa7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:224
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8b98 0x1006029f0 0x10063b460 0x10063b451 0x10063b441 0x10063afa0 0x100c61ba8 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c622c0 0x100c62414 0x1005ecca4
# 0x1005e8b97 syscall.syscall+0x57 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:23
# 0x1006029ef syscall.Stat+0x6f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:1963
# 0x10063b45f os.statNolog.func1+0x4f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:32
# 0x10063b450 os.ignoringEINTR+0x40 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/file_posix.go:251
# 0x10063b440 os.statNolog+0x30 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat_unix.go:31
# 0x10063af9f os.Stat+0x2f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/stat.go:13
# 0x100c61ba7 golang.org/x/tools/internal/gopathwalk.(*walker).walk+0xa7 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:224
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c622bf golang.org/x/tools/internal/gopathwalk.(*walker).walk+0x7bf /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:334
# 0x100c62413 golang.org/x/tools/internal/gopathwalk.(*walker).walk.func1+0x63 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gopathwalk/walk.go:325
1 @ 0x1005e8cc8 0x1005ff16c 0x1005fc2b8 0x100635890 0x100699628 0x10069961d 0x100aedb78 0x1005ecca4
# 0x1005e8cc7 syscall.syscall6+0x67 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/runtime/sys_darwin.go:45
# 0x1005ff16b syscall.wait4+0x4b /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/zsyscall_darwin_arm64.go:44
# 0x1005fc2b7 syscall.Wait4+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/syscall/syscall_bsd.go:144
# 0x10063588f os.(*Process).wait+0x7f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/exec_unix.go:43
# 0x100699627 os.(*Process).Wait+0x37 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/exec.go:134
# 0x10069961c os/exec.(*Cmd).Wait+0x2c /Users/matthew/.local/share/mise/installs/go/1.22.3/src/os/exec/exec.go:897
# 0x100aedb77 golang.org/x/tools/internal/gocommand.runCmdContext.func4+0x27 /Users/matthew/go/pkg/mod/golang.org/x/tools@v0.22.1-0.20240829175637-39126e24d653/internal/gocommand/invoke.go:382
1 @ 0x10062b9c4 0x10062cc20 0x10062cc0d 0x100759838 0x100765c54 0x100859810 0x1005ecca4
# 0x10062b9c3 internal/poll.(*pollDesc).prepare+0x123 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:64
# 0x10062cc1f internal/poll.(*pollDesc).prepareRead+0xcf /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_poll_runtime.go:73
# 0x10062cc0c internal/poll.(*FD).Read+0xbc /Users/matthew/.local/share/mise/installs/go/1.22.3/src/internal/poll/fd_unix.go:153
# 0x100759837 net.(*netFD).Read+0x27 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/fd_posix.go:55
# 0x100765c53 net.(*conn).Read+0x33 /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/net.go:179
# 0x10085980f net/http.(*connReader).backgroundRead+0x3f /Users/matthew/.local/share/mise/installs/go/1.22.3/src/net/http/server.go:681
Comment From: adonovan
Thanks! A lot of threads are walking your GOMODCACHE, which appears to be quite large. You might want to try go clean -modcache
as a one-off measure and see if that improves things. As luck would have it, @pjweinb is working on a new implementation of the module cache index at this very moment. When it lands in gopls it should improve things considerably.
Comment From: adonovan
P.S. It is surprising that there are so many frames on the WalkDir stack--more than 18 in some threads. This means some modules contain very deep directory hierarchies. You might be able to find out which module is the culprit by running a command to display the file names provided to the system calls. On linux you can use strace -p PID -e trace=file
. Your machine looks like a mac, in which case you could try the less targeted sudo fs_usage
.
Comment From: newhook
Thanks for the help so far! I did have a very large gomodcache, so I cleaned that, but it didn't seem to fix the problem. Running sudo fs_usage | grep gopls | grep open
shows gopls seemingly opening everything under the sun.
For example. Why would gopls be traversing my entire filesystem?
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000157 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000207 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000170 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000228 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000211 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000202 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000041 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000044 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000051 gopls
09:41:52 open Volumes/Data/Users/matthew/OrbStack/docker/containers/stack-temporal-ui-1/lib 0.000051 gopls
I tried again a couple of minutes later: ```09:44:05 open ications/Pages.app/Contents/Resources/Frames/None.sfrframe/Contents/Resources 0.000035 gopls 09:44:05 open clude/node/openssl/archs/linux64-s390x/asm_avx2/providers/common/include/prov 0.000041 gopls 09:44:05 open RaycastNodeExtensions_RaycastNodeExtensions.bundle/Contents/Resources/api-dev 0.000032 gopls 09:44:05 open RaycastNodeExtensions_RaycastNodeExtensions.bundle/Contents/Resources/api-dev 0.000027 gopls 09:44:05 open Data/Applications/Raycast.app/Contents/Resources/RaycastWeb_RaycastWeb.bundle 0.000035 gopls 09:44:05 open m/Volumes/Data/Applications/Pages.app/Contents/Resources/Frames/Baby.sfrframe 0.000026 gopls 09:44:05 open /Applications/Pages.app/Contents/Resources/Frames/Hardcover Burgundy.sfrframe 0.000172 gopls 09:44:05 open Data/Applications/Raycast.app/Contents/Resources/RaycastWeb_RaycastWeb.bundle 0.000119 gopls 09:44:05 open y/Caches/node-gyp/22.2.0/include/node/openssl/archs/linux64-s390x/asm/include 0.000039 gopls 09:44:05 open Data/Applications/Raycast.app/Contents/Resources/RaycastWeb_RaycastWeb.bundle 0.000082 gopls 09:44:05 open Data/Applications/Raycast.app/Contents/Resources/RaycastWeb_RaycastWeb.bundle 0.000100 gopls 09:44:05 open s/node-gyp/22.2.0/include/node/openssl/archs/linux64-s390x/asm/include/crypto 0.000030 gopls 09:44:05 open ications/Raycast.app/Contents/Resources/RaycastWeb_RaycastWeb.bundle/Contents 0.000026 gopls 09:44:05 open /Data/Applications/Pages.app/Contents/Resources/Frames/Baby.sfrframe/Contents 0.000122 gopls 09:44:05 open w/Library/Caches/node-gyp/22.2.0/include/node/openssl/archs/linux64-s390x/asm 0.000027 gopls
**Comment From: adonovan**
Thanks for the data, this is very helpfui.
> Why would gopls be traversing my entire filesystem?
No good reason: this is definitely a bug. Seems like the module resolver has escaped the mod cache.
What set of .go files do you have open? I wonder if somehow one of them is in the root of a very deep tree (e.g. "/a.go").
I notice that gopathwalk.Walk claims to follows symbolic links (!!):
// Unlike filepath.WalkDir, Walk follows symbolic links // (while guarding against cycles). func Walk(roots []Root, add func(root Root, dir string), opts Options) {
so if any of your source or module directories contains a link to, say /, this could spell trouble
@findleyr will certainly have more ideas.
**Comment From: newhook**
In this case I don't have any go files open in cursor (I closed them all to see whether that was causing the problem). Let me check for symlinks!
matthew@Matthew-Newhook mod % pwd /Users/matthew/go/pkg/mod matthew@Matthew-Newhook mod % find . -type l ```
and also none in the source code repo either.
Comment From: findleyr
Can you share any gopls settings that you are using?
Gopls used to scan the file system in many places, but a while ago I cleaned (most) of these up. Now the only two places I'm aware of where gopls will walk the filesystem is (1) module cache scanning and (2) looking for template files, which only occurs if you have "templateExtensions"
set.
Comment From: newhook
I don't think I'm using any gopls specific settings.
Comment From: findleyr
Ok, well this certainly looks like a runaway modcache scan.
Can you start gopls with -logfile=/tmp/gopls.log
and share the log message with "Created View". That will tell us what gopls determines as your workspace and GOMODCACHE. It may contain clues.
I would also like to send you a patch that completely disables the module cache scan. If that fixes the problem, we can be certain of the cause.
Comment From: findleyr
Moving this to v0.18.0, as my hope is that we will rewrite the entire goimports scanning logic for that release.
Comment From: pjweinb
Does this still happen? gopls now has the new module cache logic.