Skip to content

cmd/compile: deadlock #73539

@Lumaraf

Description

@Lumaraf

Go version

go version go1.24.2 windows/amd64

Output of go env in your module/workspace:

set AR=ar
set CC=gcc
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_ENABLED=0
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set CXX=g++
set GCCGO=gccgo
set GO111MODULE=on
set GOAMD64=v1
set GOARCH=amd64
set GOAUTH=netrc
set GOBIN=
set GOCACHE=C:\Users\Anwender\AppData\Local\go-build
set GOCACHEPROG=
set GODEBUG=
set GOENV=C:\Users\Anwender\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFIPS140=off
set GOFLAGS=
set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\Anwender\AppData\Local\Temp\go-build380231616=/tmp/go-build -gno-record-gcc-switches
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMOD=E:\workspace\sudoku-solver\go.mod
set GOMODCACHE=C:\Users\Anwender\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\Anwender\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Users\Anwender\go\pkg\mod\golang.org\toolchain@v0.0.1-go1.24.2.windows-amd64
set GOSUMDB=sum.golang.org
set GOTELEMETRY=local
set GOTELEMETRYDIR=C:\Users\Anwender\AppData\Roaming\go\telemetry
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=C:\Users\Anwender\go\pkg\mod\golang.org\toolchain@v0.0.1-go1.24.2.windows-amd64\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.24.2
set GOWORK=
set PKG_CONFIG=pkg-config

What did you do?

I am currently refactoring a project to use generics and at some point the go compiler stopped working.

What did you see happen?

The compiler deadlocks with the following message:

# github.com/lumaraf/sudoku-solver/restriction
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [sync.Mutex.Lock]:
internal/sync.runtime_SemacquireMutex(0x2?, 0xf7?, 0xc00014a028?)
	runtime/sema.go:95 +0x25
internal/sync.(*Mutex).lockSlow(0xc0004d84f8)
	internal/sync/mutex.go:149 +0x15d
internal/sync.(*Mutex).Lock(...)
	internal/sync/mutex.go:70
sync.(*Mutex).Lock(...)
	sync/mutex.go:46
cmd/compile/internal/types2.(*Named).resolve(0xc0004d84d0)
	cmd/compile/internal/types2/named.go:176 +0x5f
cmd/compile/internal/types2.(*Named).TypeParams(...)
	cmd/compile/internal/types2/named.go:322
cmd/compile/internal/types2.(*subster).typ(0xc00014a798, {0x1b7c168, 0xc0004e5880})
	cmd/compile/internal/types2/subst.go:245 +0x82b
cmd/compile/internal/types2.(*subster).var_(0xc00014a5d8?, 0xc0004e58f0)
	cmd/compile/internal/types2/subst.go:288 +0x2c
cmd/compile/internal/types2.substList[...](...)
	cmd/compile/internal/types2/subst.go:317
cmd/compile/internal/types2.(*subster).tuple(0x21df1b25718?, 0xc00040cae0)
	cmd/compile/internal/types2/subst.go:304 +0xa3
cmd/compile/internal/types2.(*subster).typ(0xc00014a798, {0x1b7c140, 0xc0004e2c00})
	cmd/compile/internal/types2/subst.go:164 +0x44a
cmd/compile/internal/types2.(*Checker).subst(0x0, {0x0?, 0x0?, 0x0?}, {0x1b7c140, 0xc0004e2c00}, 0xc0004f0000, 0x0, 0xc00041e260)
	cmd/compile/internal/types2/subst.go:78 +0x1ac
cmd/compile/internal/types2.(*Checker).newAliasInstance(0x0, {0x0?, 0x45349b?, 0xc0?}, 0xc0004e2c40, {0xc00041ede0, 0x2, 0x2}, 0x0, 0xc00041e260)
	cmd/compile/internal/types2/alias.go:165 +0x1c5
cmd/compile/internal/types2.(*Checker).instance(0x0, {0x0, 0x0, 0x0}, {0x1b7d910, 0xc0004e2c40}, {0xc00041ede0, 0x2, 0x2}, 0x0, ...)
	cmd/compile/internal/types2/instantiate.go:150 +0x4b0
cmd/compile/internal/types2.Instantiate(0xc00041e260, {0x1b7c190, 0xc0004e2c40}, {0xc00041ede0, 0x2, 0x2}, 0x0)
	cmd/compile/internal/types2/instantiate.go:70 +0x326
cmd/compile/internal/importer.(*reader).doTyp(0xc00014abd0)
	cmd/compile/internal/importer/ureader.go:258 +0xcc
cmd/compile/internal/importer.(*pkgReader).typIdx(0xc00047c0e0, {0x47c0e0?, 0xc0?}, 0xc0004d4ba0)
	cmd/compile/internal/importer/ureader.go:231 +0x18e
cmd/compile/internal/importer.(*reader).typ(0xc00014adf8)
	cmd/compile/internal/importer/ureader.go:201 +0x68
cmd/compile/internal/importer.(*reader).doTyp(0xc00014adf8)
	cmd/compile/internal/importer/ureader.go:279 +0x15b
cmd/compile/internal/importer.(*pkgReader).typIdx(0xc00047c0e0, {0x47c0e0?, 0xc0?}, 0xc0004d4ba0)
	cmd/compile/internal/importer/ureader.go:231 +0x18e
cmd/compile/internal/importer.(*reader).typ(0xc00014b1e0)
	cmd/compile/internal/importer/ureader.go:201 +0x68
cmd/compile/internal/importer.(*reader).param(0xc00014b1e0)
	cmd/compile/internal/importer/ureader.go:365 +0x65
cmd/compile/internal/importer.(*reader).params(0xc00014b1e0)
	cmd/compile/internal/importer/ureader.go:355 +0x74
cmd/compile/internal/importer.(*reader).signature(0xc00014b1e0, 0x0, {0x0, 0x0, 0x0}, {0x0, 0x0, 0x0})
	cmd/compile/internal/importer/ureader.go:344 +0x65
cmd/compile/internal/importer.(*reader).interfaceType(0xc00014b1e0)
	cmd/compile/internal/importer/ureader.go:326 +0x16f
cmd/compile/internal/importer.(*reader).doTyp(0xc00014b1e0)
	cmd/compile/internal/importer/ureader.go:283 +0x3c5
cmd/compile/internal/importer.(*pkgReader).typIdx(0xc00047c0e0, {0x410480?, 0xc0?}, 0xc0004d4ba0)
	cmd/compile/internal/importer/ureader.go:231 +0x18e
cmd/compile/internal/importer.(*reader).typ(0xc0004d4c00)
	cmd/compile/internal/importer/ureader.go:201 +0x68
cmd/compile/internal/importer.ReadPackage.(*pkgReader).objIdx.func1.1(0x2?)
	cmd/compile/internal/importer/ureader.go:450 +0x3e
cmd/compile/internal/types2.(*Named).resolve(0xc0004d84d0)
	cmd/compile/internal/types2/named.go:215 +0xf7
cmd/compile/internal/types2.(*Named).TypeParams(...)
	cmd/compile/internal/types2/named.go:322
cmd/compile/internal/types2.(*subster).typ(0xc00014be30, {0x1b7c168, 0xc0004d8540})
	cmd/compile/internal/types2/subst.go:245 +0x82b
cmd/compile/internal/types2.(*subster).var_(0x196dc20?, 0xc0004d85b0)
	cmd/compile/internal/types2/subst.go:288 +0x2c
cmd/compile/internal/types2.substList[...](...)
	cmd/compile/internal/types2/subst.go:317
cmd/compile/internal/types2.(*subster).tuple(0x195f420?, 0xc00040c4f8)
	cmd/compile/internal/types2/subst.go:304 +0xa3
cmd/compile/internal/types2.(*subster).typ(0xc00014be30, {0x1b7c140, 0xc0004cfac0})
	cmd/compile/internal/types2/subst.go:165 +0x46b
cmd/compile/internal/types2.(*subster).func_(0xc000415900?, 0xc0004d8620)
	cmd/compile/internal/types2/subst.go:331 +0x2c
cmd/compile/internal/types2.substList[...](...)
	cmd/compile/internal/types2/subst.go:317
cmd/compile/internal/types2.(*subster).typ(0xc00014be30, {0x1b7c1e0, 0xc0004158b0})
	cmd/compile/internal/types2/subst.go:188 +0x9fa
cmd/compile/internal/types2.(*Checker).subst(0xc000430000, {0xc000400000?, 0x41ea60?, 0xc0?}, {0x1b7c1e0, 0xc0004158b0}, 0xc0004d14a0, 0xc0004d93b0, 0xc00041e260)
	cmd/compile/internal/types2/subst.go:78 +0x1ac
cmd/compile/internal/types2.(*Named).expandUnderlying(0xc0004d93b0)
	cmd/compile/internal/types2/named.go:670 +0x4e9
cmd/compile/internal/types2.(*Named).resolve(0xc0004d93b0)
	cmd/compile/internal/types2/named.go:189 +0x154
cmd/compile/internal/types2.(*Named).TypeParams(0x2142fb0?)
	cmd/compile/internal/types2/named.go:322 +0x13
cmd/compile/internal/types2.(*Checker).instantiatedType.func3()
	cmd/compile/internal/types2/typexpr.go:490 +0x154
cmd/compile/internal/types2.(*Checker).processDelayed(0xc000430000, 0x8)
	cmd/compile/internal/types2/check.go:525 +0x211
cmd/compile/internal/types2.(*Checker).stmt(0xc000430000, 0x0, {0x1b7ddd0, 0xc00041e020})
	cmd/compile/internal/types2/stmt.go:707 +0x130a
cmd/compile/internal/types2.(*Checker).stmtList(0xc000430000, 0x0, {0xc0004080b0?, 0xc0004d05d0?, 0x500000048?})
	cmd/compile/internal/types2/stmt.go:122 +0x85
cmd/compile/internal/types2.(*Checker).funcBody(0xc000430000, 0xc0004100c0?, {0xc000412010?, 0x26ca7f1667856fc?}, 0xc0004cec00, 0xc000418040, {0x0?, 0x0?})
	cmd/compile/internal/types2/stmt.go:42 +0x310
cmd/compile/internal/types2.(*Checker).objDecl.(*Checker).funcDecl.func4()
	cmd/compile/internal/types2/decl.go:775 +0x3a
cmd/compile/internal/types2.(*Checker).processDelayed(0xc000430000, 0x0)
	cmd/compile/internal/types2/check.go:525 +0x211
cmd/compile/internal/types2.(*Checker).checkFiles(0xc000430000, {0xc0004080c0?, 0xc000080008?, 0xc000080558?})
	cmd/compile/internal/types2/check.go:467 +0x814
cmd/compile/internal/types2.(*Checker).Files(0xc00001c600?, {0xc0004080c0?, 0x0?, 0x0?})
	cmd/compile/internal/types2/check.go:427 +0x75
cmd/compile/internal/types2.(*Config).Check(0xc00041a1c0, {0xc00001c600?, 0xc00000a3e0?}, {0xc0004080c0, 0x2, 0x2}, 0xc000410360)
	cmd/compile/internal/types2/api.go:488 +0x19d
cmd/compile/internal/noder.checkFiles({0x0, {0x0, 0x0}}, {0xc000037300, 0x2, 0x199e7a0?})
	cmd/compile/internal/noder/irgen.go:95 +0x5c9
cmd/compile/internal/noder.writePkgStub({0x0?, {0x0?, 0x0?}}, {0xc000037300, 0x2, 0x2})
	cmd/compile/internal/noder/unified.go:319 +0x6a
cmd/compile/internal/noder.unified({0x0?, {0x0?, 0x0?}}, {0xc000037300?, 0x19191e0?, 0x0?})
	cmd/compile/internal/noder/unified.go:195 +0xb3
cmd/compile/internal/noder.LoadPackage({0xc00010c120, 0x2, 0xe})
	cmd/compile/internal/noder/noder.go:77 +0x43a
cmd/compile/internal/gc.Main(0x1a39ac8)
	cmd/compile/internal/gc/main.go:208 +0xcc5
main.main()
	cmd/compile/main.go:57 +0xf9

What did you expect to see?

My program or an error what is wrong in my code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    WaitingForInfoIssue is not actionable because of missing required information, which needs to be provided.compiler/runtimeIssues related to the Go compiler and/or runtime.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions