golang / vscode-go

Go extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=golang.Go
Other
3.78k stars 727 forks source link

gopls: spawns cc1 processes on file save when using imports that use cgo and chews up machine resources #3395

Closed mintsoft closed 1 month ago

mintsoft commented 1 month ago

What version of Go, VS Code & VS Code Go extension are you using?

Go 1.21, vscode 1.89.1.24130, Extension: v0.41.4 * Run `go version` to get version of Go from _the VS Code integrated terminal_. - `go version go1.21.6 linux/amd64` * Run `gopls -v version` to get version of Gopls from _the VS Code integrated terminal_. ``` Build info ---------- golang.org/x/tools/gopls v0.15.3 golang.org/x/tools/gopls@v0.15.3 h1:zbdOidFrPTc8Bx0YrN5QKgJ0zCjyGi0L27sKQ/bDG5o= github.com/BurntSushi/toml@v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/google/go-cmp@v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= golang.org/x/exp/typeparams@v0.0.0-20221212164502-fae10dda9338 h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y= golang.org/x/mod@v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/sync@v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/telemetry@v0.0.0-20240209200032-7b892fcb8a78 h1:vcVnuftN4J4UKLRcgetjzfU9FjjgXUUYUc3JhFplgV4= golang.org/x/text@v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/tools@v0.18.1-0.20240412183611-d92ae0781217 h1:uH9jJYgeLCvblH0S+03kFO0qUDxRkbLRLFiKVVDl7ak= golang.org/x/vuln@v1.0.1 h1:KUas02EjQK5LTuIx1OylBQdKKZ9jeugs+HiqO5HormU= honnef.co/go/tools@v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8= mvdan.cc/gofumpt@v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo= mvdan.cc/xurls/v2@v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8= go: go1.21.6 ``` * Run `code -v` or `code-insiders -v` to get version of VS Code or VS Code Insiders. - Version: 1.89.1 * Check your installed extensions to get the version of the VS Code Go extension - v0.41.4 * Run Ctrl+Shift+P (Cmd+Shift+P on Mac OS) > `Go: Locate Configured Go Tools` command. ``` # Tools Configuration ## Environment GOBIN: undefined toolsGopath: gopath: /home/rob/go GOROOT: /usr/local/go PATH: /home/rob/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin ## Tools go: /usr/local/go/bin/go: go version go1.21.6 linux/amd64 gopls: /home/rob/go/bin/gopls (version: v0.15.3 built with go: go1.21.6) gotests: not installed gomodifytags: not installed impl: not installed goplay: not installed dlv: not installed staticcheck: /home/rob/go/bin/staticcheck (version: v0.4.7 built with go: go1.21.6) ## Go env Workspace Folder (laptop-client): /home/rob/Documents/code/VScode-Golang_bug/laptop-client GO111MODULE='' GOARCH='amd64' GOBIN='' GOCACHE='/home/rob/.cache/go-build' GOENV='/home/rob/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/rob/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/rob/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/usr/local/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.21.6' GCCGO='gccgo' GOAMD64='v1' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/rob/Documents/code/VScode-Golang_bug/laptop-client/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2404829933=/tmp/go-build -gno-record-gcc-switches' ```

Share the Go related settings you have added/edited

None

Describe the bug

I am running into a problem very similiar to https://github.com/golang/vscode-go/issues/268. If I open a project using cgo and work on it, it seems like every time I save I amass a cc1 process that is using 1 core and does not seem to ever go away. I will provide a small project that it happens on shortly. It happens on multiple computers and not all projects, so I'm pretty sure it's something to do with cgo.

Steps to reproduce the behavior:

  1. Open project importing a cgo library
  2. Make minor changes 4 or 5 times and save each time
  3. See many cc1 processes spawned and using large amounts of CPU.
  4. Wait to see if they go away....

Screenshots or recordings

If applicable, add screenshots or recordings to help explain your problem.

mintsoft commented 1 month ago

OK the project that was a major culprit for it before now isn't doing it so I've not got an easy example at the moment. The next time it happens I'll see if I can gather some relevant information

hyangah commented 1 month ago

Thanks for filing issues. @mintsoft

Duplicate of golang/go#50151 If you find a sharable example, can you please share it in the issue? Thank you so much.