Skip to content

cmd/dist: bootstrap of tip fails with GOEXPERIMENT=newinliner and added VERSION file #64189

Description

@thanm

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

$ go version
go version devel go1.22-e14b96cb51 Tue Nov 14 16:45:59 2023 +0000 linux/amd64

Does this issue reproduce with the latest release?

No.

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

linux/amd64

What did you do?

Reported by Heschi: if you take a tip (1.22) Go repo and drop a VERSION file into it of the following form:

go1.22beta1
time 2023-11-14T23:00:34Z

then run GOEXPERIMENT=newinliner bash make.bash the bootstrap build fails (works ok if no VERSION file).

Symptom:

 Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
 Building Go toolchain2 using go_bootstrap and Go toolchain1.
 Building Go toolchain3 using go_bootstrap and Go toolchain2.
 Building packages and commands for linux/amd64.
 # crypto/cipher
 crypto/cipher/ofb.go:24:6: internal compiler error: panic: unexpected decoding error: EOF
 Please file a bug report including a short program that triggers the error.
 https://go.dev/issue/new
 # internal/coverage/cmerge
 internal/coverage/defs.go:198:6: internal compiler error: panic: unexpected decoding error: EOF
 Please file a bug report including a short program that triggers the error.
 https://go.dev/issue/new
 # internal/coverage/decodemeta
 internal/coverage/defs.go:198:6: internal compiler error: panic: unexpected decoding error: EOF
 Please file a bug report including a short program that triggers the error.
 https://go.dev/issue/new
 # internal/coverage/encodemeta
 internal/coverage/defs.go:198:6: internal compiler error: panic: unexpected decoding error: EOF
 Please file a bug report including a short program that triggers the error.

I've done a little poking around and it is indeed related to the goexperiment ; stack trace at the point of the failure appears to indicate that the compiler is trying to read the "function properties" string for an inlinable function from the object file and encountering an early EOF -- this would seem to point to some sort of mixup in object file flavors? Not clear. Representative trace at point of failure:

# crypto/rc4
goroutine 1 [running]:
runtime/debug.Stack()
	runtime/debug/stack.go:24 +0x5e
runtime/debug.PrintStack()
	runtime/debug/stack.go:16 +0x13
internal/pkgbits.(*Decoder).checkErr(0xc0004fd2f8?, {0xf4f300, 0x145e750})
	internal/pkgbits/decoder.go:246 +0x2c
internal/pkgbits.(*Decoder).rawUvarint(...)
	internal/pkgbits/decoder.go:253
internal/pkgbits.(*Decoder).Uint64(0xc000534dc0)
	internal/pkgbits/decoder.go:379 +0xa5
internal/pkgbits.(*Decoder).Len(...)
	internal/pkgbits/decoder.go:383
internal/pkgbits.(*Decoder).Reloc(0xc000534dc0, 0x0)
	internal/pkgbits/decoder.go:407 +0x8d
internal/pkgbits.(*Decoder).String(0xc000534dc0)
	internal/pkgbits/decoder.go:414 +0x89
cmd/compile/internal/noder.(*reader).funcExt(0xc000534dc0, 0xc0005151e0, 0x0)
	cmd/compile/internal/noder/reader.go:1107 +0x44c
cmd/compile/internal/noder.(*pkgReader).objIdx(0xc0004dc000, 0x3, {0x0?, 0x0, 0x0}, {0x1556f20?, 0x0, 0x0}, 0x0)
	cmd/compile/internal/noder/reader.go:768 +0xdcd
cmd/compile/internal/noder.(*pkgReader).objIdx(0xc0004dc540, 0x3, {0x0?, 0x0, 0x0}, {0x1556f20?, 0x0, 0x0}, 0x0)
	cmd/compile/internal/noder/reader.go:678 +0x4da
cmd/compile/internal/noder.(*pkgReader).objInstIdx(...)
	cmd/compile/internal/noder/reader.go:660
cmd/compile/internal/noder.(*reader).obj(0xc0005343c0)
	cmd/compile/internal/noder/reader.go:632 +0x88
cmd/compile/internal/noder.(*reader).expr(0xc0005343c0)
	cmd/compile/internal/noder/reader.go:2037 +0x4c5
cmd/compile/internal/noder.(*reader).expr(0xc0005343c0)
	cmd/compile/internal/noder/reader.go:2363 +0x26da
cmd/compile/internal/noder.(*reader).expr(0xc0005343c0)
	cmd/compile/internal/noder/reader.go:2299 +0x19fd
cmd/compile/internal/noder.(*reader).expr(0xc0005343c0)
	cmd/compile/internal/noder/reader.go:2363 +0x26da
cmd/compile/internal/noder.(*reader).ifStmt(0xc0005343c0)
	cmd/compile/internal/noder/reader.go:1798 +0x7f
cmd/compile/internal/noder.(*reader).stmt1(0xc0005343c0, 0xc000530700?, 0xc0004ff600)
	cmd/compile/internal/noder/reader.go:1668 +0x711
cmd/compile/internal/noder.(*reader).stmts(0xc0005343c0)
	cmd/compile/internal/noder/reader.go:1581 +0xa5
cmd/compile/internal/noder.(*reader).funcBody.func1()
	cmd/compile/internal/noder/reader.go:1234 +0x66
cmd/compile/internal/ir.WithFunc(0x394?, 0x31?)
	cmd/compile/internal/ir/func.go:387 +0x95
cmd/compile/internal/noder.(*reader).funcBody(0xc0005343c0, 0xc0004f7200)
	cmd/compile/internal/noder/reader.go:1223 +0xe6
cmd/compile/internal/noder.pkgReaderIndex.funcBody({0xc0004dc540, 0x1, 0xc0004e2c30, 0xc0005013c0, 0x0}, 0xc0004f7200)
	cmd/compile/internal/noder/reader.go:1211 +0xf2
cmd/compile/internal/noder.readBodies(0xc0002100c0, 0x0)
	cmd/compile/internal/noder/unified.go:242 +0x16a
cmd/compile/internal/noder.unified(...)
	cmd/compile/internal/noder/unified.go:182
cmd/compile/internal/noder.LoadPackage({0xc0001c6100?, 0x1, 0x2})
	cmd/compile/internal/noder/noder.go:77 +0x5cb
cmd/compile/internal/gc.Main(0xe23cd0)
	cmd/compile/internal/gc/main.go:197 +0xbbd
main.main()
	cmd/compile/main.go:57 +0xf9
crypto/rc4/rc4.go:31:6: internal compiler error: panic: unexpected decoding error: EOF

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions