golang / vscode-go

Go extension for Visual Studio Code

Home Page:https://marketplace.visualstudio.com/items?itemName=golang.Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

mintsoft opened this issue · comments

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

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

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.