Skip to content

cmd/compile: internal compiler error: panic during prove while compiling: unexpected induction with too many parents #63955

@fzipp

Description

@fzipp

What version of Go are you using (go version)?

$ go version
go version devel go1.22-d72f4542fe Fri Nov 3 19:58:00 2023 +0000 darwin/arm64

Does this issue reproduce with the latest release?

It does not reproduce with the 1.21 release, only with the 1.22 development version.

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=''
GOARCH='arm64'
GOBIN=''
GOCACHE='/Users/frederik/Library/Caches/go-build'
GOENV='/Users/frederik/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/frederik/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users/frederik/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Users/frederik/go/src/go.googlesource.com/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/frederik/go/src/go.googlesource.com/go/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='devel go1.22-d72f4542fe Fri Nov 3 19:58:00 2023 +0000'
GCCGO='gccgo'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/Users/frederik/bugdemo/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 -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/9g/vgkswhbn2tn8r6h6f6ry7wl80000gn/T/go-build2774285608=/tmp/go-build -gno-record-gcc-switches -fno-common'

What did you do?

I tried to compile a minimal program using the oto library with the devel version of Go 1.22 on Darwin:

package main

import "github.com/ebitengine/oto/v3"

func main() {
	_ = &oto.NewContextOptions{}
}
module bugdemo

go 1.22

require (
        github.com/ebitengine/oto/v3 v3.1.0 // indirect
        github.com/ebitengine/purego v0.5.0 // indirect
        golang.org/x/sys v0.12.0 // indirect
)
% go build

What did you expect to see?

Successful compilation as with Go 1.21.

What did you see instead?

An internal compiler error:

/Users/frederik/go/pkg/mod/github.com/ebitengine/oto/v3@v3.1.0/driver_darwin.go:203:2: internal compiler error: '(*context).Resume': panic during prove while compiling (*context).Resume:

unexpected induction with too many parents

goroutine 1 [running]:
cmd/compile/internal/ssa.Compile.func1()
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssa/compile.go:49 +0x6c
panic({0x10555e3a0?, 0x1055fe660?})
	/Users/frederik/go/src/go.googlesource.com/go/src/runtime/panic.go:763 +0x124
cmd/compile/internal/ssa.prove(0x14000b549c0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssa/prove.go:808 +0x1da8
cmd/compile/internal/ssa.Compile(0x14000b549c0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssa/compile.go:97 +0x93c
cmd/compile/internal/ssagen.buildssa(0x1400073b9e0, 0x0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssagen/ssa.go:575 +0x1ddc
cmd/compile/internal/ssagen.Compile(0x1400073b9e0, 0x0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssagen/pgen.go:216 +0x34
cmd/compile/internal/gc.compileFunctions.func5.1(0x12cc4f101?)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:182 +0x3c
cmd/compile/internal/gc.compileFunctions.func2(0x14000060600?)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:136 +0x28
cmd/compile/internal/gc.compileFunctions.func5({0x140009ca600?, 0x24, 0x1055fc4f0?})
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:181 +0x64
cmd/compile/internal/gc.compileFunctions()
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:192 +0x1f4
cmd/compile/internal/gc.Main(0x1055fc380)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/main.go:318 +0x1200
main.main()
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/main.go:57 +0x110

goroutine 1 [running]:
runtime/debug.Stack()
	/Users/frederik/go/src/go.googlesource.com/go/src/runtime/debug/stack.go:24 +0x64
cmd/compile/internal/base.FatalfAt({0x5e2248?, 0x140?}, {0x14000b48a00, 0x32}, {0x14000a9f590?, 0x5, 0x5})
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/base/print.go:225 +0x200
cmd/compile/internal/base.Fatalf(...)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/base/print.go:194
cmd/compile/internal/ssagen.(*ssafn).Fatalf(0x12cc5d110?, {0x18?, 0x0?}, {0x1053dbadd, 0x2c}, {0x14000b5e840?, 0x4, 0x0?})
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssagen/ssa.go:8225 +0x154
cmd/compile/internal/ssa.(*Func).Fatalf(0x14000b549c0, {0x1053dbadd, 0x2c}, {0x14000b5e840?, 0x4, 0x4})
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssa/func.go:742 +0x260
cmd/compile/internal/ssa.Compile.func1()
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssa/compile.go:54 +0x1a4
panic({0x10555e3a0?, 0x1055fe660?})
	/Users/frederik/go/src/go.googlesource.com/go/src/runtime/panic.go:763 +0x124
cmd/compile/internal/ssa.prove(0x14000b549c0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssa/prove.go:808 +0x1da8
cmd/compile/internal/ssa.Compile(0x14000b549c0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssa/compile.go:97 +0x93c
cmd/compile/internal/ssagen.buildssa(0x1400073b9e0, 0x0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssagen/ssa.go:575 +0x1ddc
cmd/compile/internal/ssagen.Compile(0x1400073b9e0, 0x0)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/ssagen/pgen.go:216 +0x34
cmd/compile/internal/gc.compileFunctions.func5.1(0x12cc4f101?)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:182 +0x3c
cmd/compile/internal/gc.compileFunctions.func2(0x14000060600?)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:136 +0x28
cmd/compile/internal/gc.compileFunctions.func5({0x140009ca600?, 0x24, 0x1055fc4f0?})
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:181 +0x64
cmd/compile/internal/gc.compileFunctions()
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/compile.go:192 +0x1f4
cmd/compile/internal/gc.Main(0x1055fc380)
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/internal/gc/main.go:318 +0x1200
main.main()
	/Users/frederik/go/src/go.googlesource.com/go/src/cmd/compile/main.go:57 +0x110

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.compiler/runtimeIssues related to the Go compiler and/or runtime.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions