Skip to content

x/tools/gopls: macOS kernel panic after heavy file IO #73139

Closed as not planned
Closed as not planned
@richtera

Description

@richtera

Go version

go version go1.22.12 darwin/arm64

Output of go env in your module/workspace:

GO111MODULE=''
GOARCH='arm64'
GOBIN='/Users/andy/.local/share/mise/installs/go/1.22.12/bin'
GOCACHE='/Users/andy/Library/Caches/go-build'
GOENV='/Users/andy/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/andy/gopath/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users/andy/gopath'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Users/andy/.local/share/mise/installs/go/1.22.12'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/andy/.local/share/mise/installs/go/1.22.12/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.22.12'
GCCGO='gccgo'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/Users/andy/Development/go.mod'
GOWORK='/Users/andy/Development/my-conciliate-app/go.work'
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/vp/5m13m6sx52g2y7zn2f006jdh0000gn/T/go-build3793407225=/tmp/go-build -gno-record-gcc-switches -fno-common'

What did you do?

Started up VSCode.

What did you see happen?

My computer panics 5 times now back to back. I couldn't really figure out what was going on at first, but then I narrowed it down to "too many open files" and then killing the go/gopls processes manually it stopped crashing. Then I reconfigured my vscode go setup using the following settings.json

{
  "go.toolsEnvVars": {
    "GOOS": "js",
    "GOARCH": "wasm"
  },
  "go.inferGopath": false,
  "go.useLanguageServer": true,
  "go.languageServerFlags": ["-rpc.trace"],
  "go.buildFlags": ["-tags=js wasm"],
  "go.delveConfig": {
    "dlvLoadConfig": {
      "followPointers": false,
      "maxVariableRecurse": 1,
      "maxStringLen": 120,
      "maxArrayValues": 25,
      "maxStructFields": 5
    }
  },
  "go.toolsManagement.autoUpdate": false,
  "go.diagnostic.enableAny": false,
  "go.lintOnSave": "off",
  "go.vetOnSave": "off",
  "go.modReferences": false,
  "go.survey.prompt": false,
  "[go]": {
    "editor.defaultFormatter": "golang.go"
  },
  "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/**": true,
    "**/vendor/**": true,
    "**/hardhat/**": true,
    "**/.next/**": true,
    "**/dist/**": true,
    "**/go/pkg/**": true,
    "**/*.wasm": true,
    "**/*.js": true,
    "**/*.ts": true,
    "**/*.tsx": true,
    "assets/**": true,
    "backup/**": true,
    "bin/**": true,
    "cache/**": true,
    "images/**": true,
    "logs/**": true,
    "system/**": true,
    "tmp/**": true,
    "webserver-configs/**": true
  }
}

and now it seems to no longer reboot.

What did you expect to see?

I think gopls should limit itself how many files it attempts to open. To me it feels that un-configured projects should not panic the computer. It took a few hours to figure out why it was panicing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ToolsThis label describes issues relating to any tools in the x/tools repository.WaitingForInfoIssue is not actionable because of missing required information, which needs to be provided.goplsIssues related to the Go language server, gopls.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions