Skip to content

cmd/compile crash with -l=4  #44430

@thanm

Description

@thanm

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions