Skip to content

cmd/compile crash with -l=4 #44430

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
thanm opened this issue Feb 19, 2021 · 4 comments
Closed

cmd/compile crash with -l=4 #44430

thanm opened this issue Feb 19, 2021 · 4 comments
Labels
FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone

Comments

@thanm
Copy link
Contributor

thanm commented Feb 19, 2021

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

$ go version
go version devel +489c9e84be Fri Feb 19 10:37:37 2021 -0500 linux/amd64

Does this issue reproduce with the latest release?

Seems to happen only on tip (1.16 is ok).

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

linux/amd64

What did you do?

Using attached zip file, build with:

$ unzip file.zip
...
$ cd inlretbug/main
$ go build -gcflags=all=-l=4 .

What did you expect to see?

clean build

What did you see instead?

This crash:

# inlretbug/main
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x5f5685]

goroutine 1 [running]:
cmd/compile/internal/ir.(*Name).Op(0x0, 0x5c4155)
	<autogenerated>:1 +0x5
cmd/compile/internal/ir.HasUniquePos(0xeaf3e0, 0x0, 0xc0004afb01)
	/ssd2/go/src/cmd/compile/internal/ir/node.go:506 +0x35
cmd/compile/internal/ir.SetPos(0xeaf3e0, 0x0, 0xeaf3e0)
	/ssd2/go/src/cmd/compile/internal/ir/node.go:527 +0x65
cmd/compile/internal/typecheck.typecheck(0xeaf3e0, 0x0, 0x2, 0xeaf3e0, 0xc0004bd520)
	/ssd2/go/src/cmd/compile/internal/typecheck/typecheck.go:288 +0x66
cmd/compile/internal/typecheck.Expr(...)
	/ssd2/go/src/cmd/compile/internal/typecheck/typecheck.go:32
cmd/compile/internal/typecheck.tcClosure(0xc0004b3bd0, 0x2)
	/ssd2/go/src/cmd/compile/internal/typecheck/func.go:341 +0x188
cmd/compile/internal/typecheck.typecheck1(0xeae2b0, 0xc0004b3bd0, 0x2, 0xc0004b3bd0, 0x0)
	/ssd2/go/src/cmd/compile/internal/typecheck/typecheck.go:770 +0x1a27
cmd/compile/internal/typecheck.typecheck(0xeae2b0, 0xc0004b3bd0, 0x2, 0xc, 0xc00024e380)
	/ssd2/go/src/cmd/compile/internal/typecheck/typecheck.go:371 +0xaed
cmd/compile/internal/typecheck.Expr(...)
	/ssd2/go/src/cmd/compile/internal/typecheck/typecheck.go:32
cmd/compile/internal/inline.(*inlsubst).closure(0xc0004bb560, 0xc0004b3540, 0x203000, 0x203000)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1245 +0xad3
cmd/compile/internal/inline.(*inlsubst).node(0xc0004bb560, 0xeae2b0, 0xc0004b3540, 0x748045, 0xc000484080)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1365 +0x14c9
cmd/compile/internal/ir.(*ConvExpr).editChildren(0xc0004b3b80, 0xc0000d6a50)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:445 +0x85
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.(*inlsubst).node(0xc0004bb560, 0xeae5d0, 0xc0004b3590, 0x748045, 0xc000484080)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1371 +0x9e2
cmd/compile/internal/ir.(*ConvExpr).editChildren(0xc0004b3b30, 0xc0000d6a50)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:445 +0x85
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.(*inlsubst).node(0xc0004bb560, 0xeae5d0, 0xc0004b35e0, 0xd4aa01, 0xed0100)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1371 +0x9e2
cmd/compile/internal/ir.editNodes(0xc0000d6ab0, 0x1, 0x1, 0xc0000d6a50)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:1422 +0x76
cmd/compile/internal/ir.(*ReturnStmt).editChildren(0xc0004b3ae0, 0xc0000d6a50)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:957 +0x79
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.(*inlsubst).node(0xc0004bb560, 0xeaf890, 0xc0004b3630, 0xc0000d6aa0, 0xc00000f978)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1371 +0x9e2
cmd/compile/internal/inline.(*inlsubst).list(0xc0004bb560, 0xc0000d6970, 0x1, 0x1, 0x1, 0xc00000f978, 0x1)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1094 +0xbb
cmd/compile/internal/inline.(*inlsubst).closure(0xc0004bb560, 0xc0004b3680, 0xeadd38, 0xc0004b2d20)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1227 +0x8e8
cmd/compile/internal/inline.(*inlsubst).node(0xc0004bb560, 0xeae2b0, 0xc0004b3680, 0x748045, 0xc000484080)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1365 +0x14c9
cmd/compile/internal/ir.(*ConvExpr).editChildren(0xc0004b39a0, 0xc0000d6a50)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:445 +0x85
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.(*inlsubst).node(0xc0004bb560, 0xeae5d0, 0xc0004b36d0, 0xc0000d6a80, 0xc0000d6a70)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1371 +0x9e2
cmd/compile/internal/inline.(*inlsubst).list(0xc0004bb560, 0xc0000d6980, 0x1, 0x1, 0x1, 0x1, 0x0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1094 +0xbb
cmd/compile/internal/inline.(*inlsubst).node(0xc0004bb560, 0xeaf890, 0xc0004b3720, 0xc0000d6a60, 0x10)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1327 +0x305
cmd/compile/internal/inline.(*inlsubst).list(0xc0004bb560, 0xc0000d6990, 0x1, 0x1, 0x1, 0x1, 0x1)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1094 +0xbb
cmd/compile/internal/inline.mkinlcall(0xc0004dc750, 0xc0004af4a0, 0xc000000050, 0xc0004a1320, 0xc00025bae0, 0x0, 0x0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:979 +0x1ec9
cmd/compile/internal/inline.inlnode(0xeae058, 0xc0004dc750, 0x50, 0xc0004a1320, 0xc00025bae0, 0xeaf3e0, 0xc0004bc4e0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:630 +0x607
cmd/compile/internal/inline.InlineCalls.func1(0xeae058, 0xc0004dc750, 0xc0004bc4e0, 0xeaf3e0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:517 +0x51
cmd/compile/internal/ir.editNodes(0xc0000d6820, 0x1, 0x1, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:1422 +0x76
cmd/compile/internal/ir.(*AssignListStmt).editChildren(0xc0004baae0, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:108 +0xab
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.inlnode(0xeadae0, 0xc0004baae0, 0x7f2200000050, 0xc0004a1320, 0xc00025bae0, 0xd2fd00, 0xd479c0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:596 +0x206
cmd/compile/internal/inline.InlineCalls.func1(0xeadae0, 0xc0004baae0, 0x613000000002, 0x7a)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:517 +0x51
cmd/compile/internal/ir.editNodes(0xc00025bb80, 0x2, 0x2, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:1422 +0x76
cmd/compile/internal/ir.(*BlockStmt).editChildren(0xc0004b66c0, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:229 +0x79
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.inlnode(0xeadec8, 0xc0004b66c0, 0x50, 0xc0004a1320, 0xc00025bae0, 0xeaecd8, 0xc0004a13e0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:596 +0x206
cmd/compile/internal/inline.InlineCalls.func1(0xeadec8, 0xc0004b66c0, 0xc0004a13e0, 0xeaecd8)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:517 +0x51
cmd/compile/internal/ir.editNodes(0xc00025bba0, 0x2, 0x2, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:1422 +0x76
cmd/compile/internal/ir.(*InlinedCallExpr).editChildren(0xc00024e2a0, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:668 +0x7d
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.mkinlcall(0xc0004dc360, 0xc0004af340, 0xc000000050, 0xc0004a1320, 0xc00025bae0, 0x0, 0x0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:1007 +0x2186
cmd/compile/internal/inline.inlnode(0xeae058, 0xc0004dc360, 0x50, 0xc0004a1320, 0xc00025bae0, 0xc0004bc000, 0xc00022bb30)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:630 +0x607
cmd/compile/internal/inline.InlineCalls.func1(0xeae058, 0xc0004dc360, 0xc0004dc3f0, 0x609000000002)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:517 +0x51
cmd/compile/internal/ir.editNodes(0xc00020a610, 0x1, 0x1, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:1422 +0x76
cmd/compile/internal/ir.(*CallExpr).editChildren(0xc0004dc3f0, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:276 +0x8e
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.inlnode(0xeae058, 0xc0004dc3f0, 0x50, 0xc0004a1320, 0xc00025bae0, 0x30, 0x7f226c31e108)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:596 +0x206
cmd/compile/internal/inline.InlineCalls.func1(0xeae058, 0xc0004dc3f0, 0x20, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:517 +0x51
cmd/compile/internal/ir.editNodes(0xc00020a620, 0x1, 0x1, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/node_gen.go:1422 +0x76
cmd/compile/internal/ir.(*Func).editChildren(0xc00025e420, 0xc00025bae0)
	/ssd2/go/src/cmd/compile/internal/ir/func.go:134 +0x4b
cmd/compile/internal/ir.EditChildren(...)
	/ssd2/go/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.InlineCalls(0xc00025e420)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:519 +0xed
cmd/compile/internal/inline.InlinePackage.func1(0xc00000f878, 0x1, 0x1, 0xc00024e200)
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:71 +0x76
cmd/compile/internal/ir.(*bottomUpVisitor).visit(0xc0004a1290, 0xc00025e420, 0xc0002251a0)
	/ssd2/go/src/cmd/compile/internal/ir/scc.go:128 +0x2f7
cmd/compile/internal/ir.VisitFuncsBottomUp(0xc000250580, 0x2, 0x2, 0xd8e398)
	/ssd2/go/src/cmd/compile/internal/ir/scc.go:60 +0x116
cmd/compile/internal/inline.InlinePackage()
	/ssd2/go/src/cmd/compile/internal/inline/inl.go:58 +0x4f
cmd/compile/internal/gc.Main(0xd8e258)
	/ssd2/go/src/cmd/compile/internal/gc/main.go:225 +0x132a
main.main()
	/ssd2/go/src/cmd/compile/main.go:54 +0xb1

I originally ran into this trying to build kubernetes/kubelet with "-l=4" to stress test a recent DWARF inlining change.

Not sure what the priority of this is, since normally folks don't build with "-l=4", but I'm reporting it since it seems possible that it might crop up in some other context with a regular inlining level.

inlretbug.zip

@thanm thanm added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Feb 19, 2021
@thanm thanm added this to the Go1.17 milestone Feb 19, 2021
@thanm
Copy link
Contributor Author

thanm commented Feb 19, 2021

@danscales

@danscales danscales self-assigned this Feb 19, 2021
@danscales
Copy link
Contributor

This is another symptom of issue #44335 , which I'll check in the fix for shortly. I just verified that the fix for 44335 fixes this problem. Thanks for the repro case!

@thanm
Copy link
Contributor Author

thanm commented Feb 19, 2021

OK great, thanks for that. I'll close this out as a dup --

@thanm
Copy link
Contributor Author

thanm commented Feb 19, 2021

Dup of #44335.

@thanm thanm closed this as completed Feb 19, 2021
@golang golang locked and limited conversation to collaborators Feb 19, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
None yet
Development

No branches or pull requests

3 participants