Workflowcheck golang 1.22.0?

Hi,

Is it just me or does workflowcheck not work with golang 1.22.0?

I see this:

workflowcheck ./...
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x104290140]

goroutine 518 [running]:
go/types.(*Checker).handleBailout(0x1400027c000, 0x14000c37b98)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/check.go:367 +0x9c
panic({0x104492ac0?, 0x1046abe70?})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/runtime/panic.go:770 +0x124
go/types.(*StdSizes).Sizeof(0x0, {0x1044ec2f8, 0x1046af980})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/sizes.go:228 +0x320
go/types.(*Config).sizeof(...)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/sizes.go:333
go/types.representableConst.func1({0x1044ec2f8?, 0x1046af980?})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/const.go:76 +0x9c
go/types.representableConst({0x1044ed960, 0x1046a4720}, 0x1400027c000, 0x1046af980, 0x14000c35f98)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/const.go:92 +0x138
go/types.(*Checker).representation(0x1400027c000, 0x14000f82080, 0x1046af980)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/const.go:256 +0x68
go/types.(*Checker).implicitTypeAndValue(0x1400027c000, 0x14000f82080, {0x1044ec2f8, 0x1046af980})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/expr.go:375 +0x340
go/types.(*Checker).convertUntyped(0x1400027c000, 0x14000f82080, {0x1044ec2f8, 0x1046af980})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/const.go:289 +0x30
go/types.(*Checker).matchTypes(0x1400027c000, 0x14000f82040, 0x14000f82080)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/expr.go:926 +0x7c
go/types.(*Checker).binary(0x1400027c000, 0x14000f82040, {0x1044ecea0, 0x14000bae9c0}, {0x1044ecb10, 0x14000bd4280}, {0x1044ed3b0, 0x14000bd42a0}, 0x28, 0x7b37)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/expr.go:800 +0x114
go/types.(*Checker).exprInternal(0x1400027c000, 0x0, 0x14000f82040, {0x1044ecea0, 0x14000bae9c0}, {0x0, 0x0})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/expr.go:1416 +0x1d4
go/types.(*Checker).rawExpr(0x1400027c000, 0x0, 0x14000f82040, {0x1044ecea0?, 0x14000bae9c0?}, {0x0?, 0x0?}, 0x0)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/expr.go:979 +0x12c
go/types.(*Checker).expr(0x1400027c000, 0x1044ec0a0?, 0x14000f82040, {0x1044ecea0?, 0x14000bae9c0?})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/expr.go:1513 +0x38
go/types.(*Checker).stmt(0x1400027c000, 0x0, {0x1044ed200, 0x14000744900})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/stmt.go:570 +0xdb0
go/types.(*Checker).stmtList(0x1400027c000, 0x0, {0x14000bd4400?, 0x0?, 0x0?})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/stmt.go:121 +0x88
go/types.(*Checker).funcBody(0x1400027c000, 0x1044ec2f8?, {0x14000880688?, 0x1046afb60?}, 0x14000745ac0, 0x14000baea50, {0x0?, 0x0?})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/stmt.go:41 +0x21c
go/types.(*Checker).funcDecl.func1()
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/decl.go:852 +0x44
go/types.(*Checker).processDelayed(0x1400027c000, 0x0)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/check.go:467 +0x12c
go/types.(*Checker).checkFiles(0x1400027c000, {0x14000bb6220, 0x1, 0x1})
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/check.go:411 +0x188
go/types.(*Checker).Files(...)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/go/types/check.go:372
golang.org/x/tools/go/packages.(*loader).loadPackage(0x14000192000, 0x1400086dc20)
	/Users/user/go/pkg/mod/golang.org/x/tools@v0.10.0/go/packages/packages.go:1055 +0x870
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
	/Users/user/go/pkg/mod/golang.org/x/tools@v0.10.0/go/packages/packages.go:854 +0x178
sync.(*Once).doSlow(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/sync/once.go:74 +0x100
sync.(*Once).Do(...)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/sync/once.go:65
golang.org/x/tools/go/packages.(*loader).loadRecursive(0x0?, 0x0?)
	/Users/user/go/pkg/mod/golang.org/x/tools@v0.10.0/go/packages/packages.go:842 +0x50
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1.1(0x0?)
	/Users/user/go/pkg/mod/golang.org/x/tools@v0.10.0/go/packages/packages.go:849 +0x30
created by golang.org/x/tools/go/packages.(*loader).loadRecursive.func1 in goroutine 397
	/Users/user/go/pkg/mod/golang.org/x/tools@v0.10.0/go/packages/packages.go:848 +0x84

That said, I didn’t dig very deep. So really just looking for a sanity check.

Thanks!

Albert

This is a known issue we have already fixed in master and we will be releasing the fix in a tagged workflowcheck version. In the meantime you can reference master (or a commit hash therein).

1 Like