Skip to content
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

cmd/compile: panic: interface conversion: interface is nil, not gc.SliceType #15530

Closed
rhysh opened this issue May 3, 2016 · 4 comments
Closed
Milestone

Comments

@rhysh
Copy link
Contributor

rhysh commented May 3, 2016

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

$ go version
go version devel +15f7a66 Tue May 3 14:57:06 2016 +0000 darwin/amd64

What did you do?

go build -o /tmp/command ./cmd/command

What did you expect to see?

I expected the package to compile and link successfully, as it does with go1.5.4 and go1.6.2.

What did you see instead?

cmd/compile panicked. Within my (closed-source) project, there are two packages that cause a panic in compile. One of them is a main package, the other a non-main package.

I eliminated lines in those two packages until the panic went away—the critical lines in both packages were a call to functions in a third (non-main) package that 1) successfully compiles, and 2) contains other functions with similar signatures that are called from elsewhere in the project without causing compiler panics.

I bisected the Go toolchain, which indicated 7538b1d—enabling the binary export format—as the first commit with this bug. Adding -gcflags="-newexport=0" to the command line when compiling with 15f7a66 results in a successful build.

It's not (yet) much to go on, particularly since I'm not able to share the code. What information would be most useful for debugging?

panic: interface conversion: interface is nil, not gc.SliceType

goroutine 1 [running]:
panic(0x47ac80, 0x820f32c40)
        /usr/local/go/src/runtime/panic.go:500 +0x18c
cmd/compile/internal/gc.(*Type).Elem(0x820f3aa50, 0x820e6d090)
        /usr/local/go/src/cmd/compile/internal/gc/type.go:737 +0x1c4
cmd/compile/internal/gc.eqtype1(0x820e6d180, 0x820f3aa50, 0x820d59978, 0x0)
        /usr/local/go/src/cmd/compile/internal/gc/subr.go:715 +0x758
cmd/compile/internal/gc.eqtype1(0x820e6dae0, 0x820f3b400, 0x820d59978, 0x2)
        /usr/local/go/src/cmd/compile/internal/gc/subr.go:688 +0x2bc
cmd/compile/internal/gc.eqtype1(0x820e6d130, 0x820f3aaa0, 0x820d59978, 0xfffffffffffffff2)
        /usr/local/go/src/cmd/compile/internal/gc/subr.go:669 +0x558
cmd/compile/internal/gc.Eqtype(0x820e6d130, 0x820f3aaa0, 0x820e44c10)
        /usr/local/go/src/cmd/compile/internal/gc/subr.go:629 +0x34
cmd/compile/internal/gc.importtype(0x820e6d090, 0x820f3aaa0)
        /usr/local/go/src/cmd/compile/internal/gc/export.go:570 +0x25c
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0xffffffffffffff14)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:342 +0x15b
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x8207c3338)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:397 +0xaf1
cmd/compile/internal/gc.(*importer).param(0x820d8ac60, 0x0, 0x1)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:553 +0x30
cmd/compile/internal/gc.(*importer).paramList(0x820d8ac60, 0x0, 0x0, 0x0)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:546 +0xa0
cmd/compile/internal/gc.(*importer).method(0x820d8ac60, 0x820f3c630)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:509 +0x86
cmd/compile/internal/gc.(*importer).methodList(0x820d8ac60, 0x0, 0x820f110e0, 0x820d829a0)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:498 +0x85
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820e76870)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:423 +0xf73
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820efaf50)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:341 +0x138
cmd/compile/internal/gc.(*importer).field(0x820d8ac60, 0x2)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:469 +0x4b
cmd/compile/internal/gc.(*importer).fieldList(0x820d8ac60, 0xffffffffffffff16, 0x820f11040, 0x6)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:459 +0x85
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820f10fa0)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:406 +0xb74
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0xffffffffffffff12)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:341 +0x138
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0xffffffffffffff14)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:410 +0xedb
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820f10e10)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:397 +0xaf1
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820f122a0)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:429 +0xcc3
cmd/compile/internal/gc.(*importer).field(0x820d8ac60, 0x1)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:469 +0x4b
cmd/compile/internal/gc.(*importer).fieldList(0x820d8ac60, 0xffffffffffffff16, 0x820f10cd0, 0x20)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:459 +0x85
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820f10c30)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:406 +0xb74
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820f121c0)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:341 +0x138
cmd/compile/internal/gc.(*importer).field(0x820d8ac60, 0x3)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:469 +0x4b
cmd/compile/internal/gc.(*importer).fieldList(0x820d8ac60, 0xffffffffffffff16, 0x820f10be0, 0x6)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:459 +0x85
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x820f10b40)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:406 +0xb74
cmd/compile/internal/gc.(*importer).typ(0x820d8ac60, 0x8207a7c70)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:341 +0x138
cmd/compile/internal/gc.(*importer).obj(0x820d8ac60, 0xfffffffffffffffd)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:250 +0x903
cmd/compile/internal/gc.Import(0x8207aa2a0)
        /usr/local/go/src/cmd/compile/internal/gc/bimport.go:88 +0x338
cmd/compile/internal/gc.importfile(0x820bae800, 0x0, 0x0, 0x0)
        /usr/local/go/src/cmd/compile/internal/gc/main.go:825 +0x902
cmd/compile/internal/gc.(*parser).importdcl(0x820bae7e0)
        /usr/local/go/src/cmd/compile/internal/gc/parser.go:341 +0x160
cmd/compile/internal/gc.(*parser).import_(0x820bae7e0)
        /usr/local/go/src/cmd/compile/internal/gc/parser.go:300 +0x67
cmd/compile/internal/gc.(*parser).file(0x820bae7e0)
        /usr/local/go/src/cmd/compile/internal/gc/parser.go:268 +0x54
cmd/compile/internal/gc.parse_file(0x8207aa240)
        /usr/local/go/src/cmd/compile/internal/gc/parser.go:31 +0x4a
cmd/compile/internal/gc.Main()
        /usr/local/go/src/cmd/compile/internal/gc/main.go:331 +0x144e
cmd/compile/internal/amd64.Main()
        /usr/local/go/src/cmd/compile/internal/amd64/galign.go:96 +0x381
main.main()
        /usr/local/go/src/cmd/compile/main.go:33 +0x286
@josharian
Copy link
Contributor

cc @griesemer @mdempsky

@josharian josharian added this to the Go1.7 milestone May 3, 2016
@griesemer griesemer self-assigned this May 6, 2016
@griesemer
Copy link
Contributor

@rhysh Can you please confirm that this still crashes with the latest tip (I have fixed another import bug today, and I'm about to fix another one, likely). Thanks.

@rhysh
Copy link
Contributor Author

rhysh commented May 6, 2016

Thanks @griesemer , it looks like this is fixed. I'm unable to reproduce the crash with 2e32efc (go version devel +2e32efc Fri May 6 05:50:02 2016 +0000 darwin/amd64)

@rhysh rhysh closed this as completed May 6, 2016
@rhysh
Copy link
Contributor Author

rhysh commented May 6, 2016

This was fixed by commit 8650c23

@golang golang locked and limited conversation to collaborators May 6, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants