Skip to content
New issue

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

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

Already on GitHub? # to your account

GO 1.17 crashes when trying to compile a program #48126

Closed
korya opened this issue Sep 1, 2021 · 5 comments
Closed

GO 1.17 crashes when trying to compile a program #48126

korya opened this issue Sep 1, 2021 · 5 comments
Labels
FrozenDueToAge WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided.

Comments

@korya
Copy link

korya commented Sep 1, 2021

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

$ go version
go version go1.17 darwin/amd64

Does this issue reproduce with the latest release?

The issue started to occur for GO 1.17 installed from homebrew. The same code compiled just fine with GO 1.16.

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

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/korya/Library/Caches/go-build"
GOENV="/Users/korya/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/korya/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/korya/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.17/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.17/libexec/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.17"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/korya/dev/xxx/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/b4/fbt06km1201gjjk5m4p4r9kw0000gn/T/go-build3862782390=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

I just run my application code.

What did you expect to see?

I expected the binary to be compiled and run.

What did you see instead?

A crash. Unfortunately, the code is proprietary and I cannot share it. Below are the crash details:

$go run main.go
# github.com/xxx/yyy/service/streetview/repository
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x98 pc=0x1227ecc]

goroutine 1 [running]:
cmd/compile/internal/typecheck.Lookdot(0xc000a46a20, 0xc0003df810, 0x1)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/typecheck.go:1294 +0x86c
cmd/compile/internal/typecheck.(*importReader).node(0xc000826880)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1229 +0x2293
cmd/compile/internal/typecheck.(*importReader).expr(0x11d7369)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1053 +0x1d
cmd/compile/internal/typecheck.(*importReader).exprList(0xc000826880)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1043 +0x47
cmd/compile/internal/typecheck.(*importReader).node(0xc000826880)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1313 +0x300c
cmd/compile/internal/typecheck.(*importReader).expr(0x0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1053 +0x1d
cmd/compile/internal/typecheck.(*importReader).exprList(0xc000826880)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1043 +0x47
cmd/compile/internal/typecheck.(*importReader).node(0xc000826880)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1435 +0x2c54
cmd/compile/internal/typecheck.(*importReader).stmtList(0x2)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:997 +0x5b
cmd/compile/internal/typecheck.(*importReader).funcBody(0xc000826880, 0xc0003e29a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:922 +0x85
cmd/compile/internal/typecheck.(*importReader).doInline(0x186b2a0, 0xc0003e29a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:886 +0x99
cmd/compile/internal/typecheck.ImportBody(0xc0003e29a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:83 +0x206
cmd/compile/internal/typecheck.ImportedBody(0xc0003e29a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/func.go:132 +0xad
cmd/compile/internal/inline.Inline_Flood(0xc000612f70, 0x1913370)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:216 +0x194
cmd/compile/internal/gc.(*exporter).markObject(0x27f14a5, {0x1a4af48, 0xc000612f70})
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/export.go:92 +0x5f
cmd/compile/internal/gc.(*exporter).markType(0xc00012bad0, 0xc0004cae70)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/export.go:115 +0x392
cmd/compile/internal/gc.(*exporter).markType(0xc00012bad0, 0xc0003e6bd0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/export.go:131 +0x129
cmd/compile/internal/gc.(*exporter).markType(0xc00012bad0, 0xc0003e6e70)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/export.go:151 +0x2ea
cmd/compile/internal/gc.(*exporter).markType(0xc00012bad0, 0xc000498000)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/export.go:157 +0x269
cmd/compile/internal/gc.(*exporter).markObject(0xc00012bab0, {0x1a4af48, 0xc0004904e0})
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/export.go:96 +0x8f
cmd/compile/internal/gc.dumpexport(0xc000620a90)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/export.go:33 +0xfc
cmd/compile/internal/gc.dumpCompilerObj(0xc000620a90)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/obj.go:106 +0x28
cmd/compile/internal/gc.dumpobj1({0x7ffeefbfe58b, 0x50}, 0x3)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/obj.go:62 +0x178
cmd/compile/internal/gc.dumpobj()
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/obj.go:43 +0x36
cmd/compile/internal/gc.Main(0x1912b20)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/main.go:307 +0x105b
main.main()
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/main.go:55 +0xdd
# github.com/xxx/yyy/service/queue/tasks
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x98 pc=0x1227ecc]

goroutine 1 [running]:
cmd/compile/internal/typecheck.Lookdot(0xc001e0fb00, 0xc000c0a850, 0x1)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/typecheck.go:1294 +0x86c
cmd/compile/internal/typecheck.(*importReader).node(0xc0015a1780)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1229 +0x2293
cmd/compile/internal/typecheck.(*importReader).expr(0x11d7369)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1053 +0x1d
cmd/compile/internal/typecheck.(*importReader).exprList(0xc0015a1780)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1043 +0x47
cmd/compile/internal/typecheck.(*importReader).node(0xc0015a1780)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1313 +0x300c
cmd/compile/internal/typecheck.(*importReader).expr(0x0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1053 +0x1d
cmd/compile/internal/typecheck.(*importReader).exprList(0xc0015a1780)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1043 +0x47
cmd/compile/internal/typecheck.(*importReader).node(0xc0015a1780)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:1435 +0x2c54
cmd/compile/internal/typecheck.(*importReader).stmtList(0x2)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:997 +0x5b
cmd/compile/internal/typecheck.(*importReader).funcBody(0xc0015a1780, 0xc000c0f4a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:922 +0x85
cmd/compile/internal/typecheck.(*importReader).doInline(0x186b2a0, 0xc000c0f4a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:886 +0x99
cmd/compile/internal/typecheck.ImportBody(0xc000c0f4a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/iimport.go:83 +0x206
cmd/compile/internal/typecheck.ImportedBody(0xc000c0f4a0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/typecheck/func.go:132 +0xad
cmd/compile/internal/inline.mkinlcall(0xc00080eab0, 0xc000c0f4a0, 0x4caf60, 0xc000f90f60, 0xc000098870)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:797 +0x596
cmd/compile/internal/inline.inlnode({0x1a49af8, 0xc00080eab0}, 0x0, 0xc0009c6e10, 0xc000098070)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:668 +0x792
cmd/compile/internal/inline.InlineCalls.func1({0x1a49af8, 0xc00080eab0})
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:541 +0x31
cmd/compile/internal/ir.(*AssignStmt).editChildren(0xc0009c6eb0, 0xc001e18100)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/ir/node_gen.go:163 +0xb5
cmd/compile/internal/ir.EditChildren(...)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.inlnode({0x1a49710, 0xc0009c6eb0}, 0x30, 0x30, 0x1000000020b2108)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:620 +0x2c4
cmd/compile/internal/inline.InlineCalls.func1({0x1a49710, 0xc0009c6eb0})
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:541 +0x31
cmd/compile/internal/ir.editNodes({0xc00042e900, 0xd, 0x18a17c0}, 0xc001e18100)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/ir/node_gen.go:1449 +0x74
cmd/compile/internal/ir.(*Func).editChildren(0xc001d77b18, 0x11b79c7)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/ir/func.go:152 +0x2e
cmd/compile/internal/ir.EditChildren(...)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/ir/visit.go:185
cmd/compile/internal/inline.InlineCalls(0xc00009b080)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:543 +0xf2
cmd/compile/internal/inline.InlinePackage.func1({0xc001df60c0, 0x1, 0xc00009b080}, 0x0)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:71 +0x46
cmd/compile/internal/ir.(*bottomUpVisitor).visit(0xc00058c330, 0xc00009b080)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/ir/scc.go:128 +0x2e8
cmd/compile/internal/ir.VisitFuncsBottomUp({0xc000786000, 0xfd, 0xb}, 0x1912c58)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/ir/scc.go:60 +0x105
cmd/compile/internal/inline.InlinePackage()
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/inline/inl.go:58 +0x33
cmd/compile/internal/gc.Main(0x1912b20)
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/internal/gc/main.go:229 +0xc1b
main.main()
	/usr/local/Cellar/go/1.17/libexec/src/cmd/compile/main.go:55 +0xdd
make: *** [Makefile:72: start] Error 2
@korya
Copy link
Author

korya commented Sep 1, 2021

Just downgraded to GO 1.16.7 using homebrew and everything works as expected:

 $ go version
go version go1.16.7 darwin/amd64
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/korya/Library/Caches/go-build"
GOENV="/Users/korya/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/korya/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/korya/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go@1.16/1.16.7/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go@1.16/1.16.7/libexec/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.16.7"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/korya/dev/xxx/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/b4/fbt06km1201gjjk5m4p4r9kw0000gn/T/go-build1775088553=/tmp/go-build -gno-record-gcc-switches -fno-common"

@cuonglm
Copy link
Member

cuonglm commented Sep 1, 2021

Can you try with gotip to see if problem still happen?

Also could you please provide a minimal reproducer?

Might be related to #48088

@cuonglm cuonglm added the WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided. label Sep 1, 2021
@korya
Copy link
Author

korya commented Sep 1, 2021

gotip worked. It compiled and ran the program.

Sorry, I don't have a minimal reproducer.

@cuonglm
Copy link
Member

cuonglm commented Sep 2, 2021

Then it's duplicated of #48088 and will be backported to go1.17 in next minor release.

@cuonglm cuonglm closed this as completed Sep 2, 2021
@korya
Copy link
Author

korya commented Sep 2, 2021

OK. Thanks!

@golang golang locked and limited conversation to collaborators Sep 2, 2022
# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
FrozenDueToAge WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided.
Projects
None yet
Development

No branches or pull requests

3 participants