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

(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.