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: 'internal compiler error: initplan arraylit' during bootstrapping #33373
Comments
This seems like a memory corruption issue to me. That compiler frontend code in question here (gc/sinit.go) is pretty deterministic, and the Fatalf message suggests an AST structure that shouldn't be possible (an OKEY node with its LHS also being an OKEY node), and certainly not during compiling valid code (e.g., the standard library). I'd suspect either the runtime or some heap-pointer-handling code in the compiler backend is at fault here. /cc @aclements |
The builder failure was testing https://go-review.googlesource.com/c/go/+/186926. Could be related (CL touches the GC), but could also be a red herring. /cc @mknyszek for FYI |
Bumping to release-blocker for Go 1.13, at least until we've investigated and have a better understanding of the issue. |
I agree that this appears to be a corruption issue and not a compiler issue. We've never had an "initplan arraylit" failure before on the dashboard (though this Fatalf has only existed since last November), and I agree with @mdempsky 's assessment that this is an OKEY on the LHS of an OKEY, which doesn't make sense and would never have passed type checking. There's also no parallelism at this point, so it can't be a race under Curiously, the invalid node it's printing out is a real node in Given that this appears very unlikely to be a compiler bug and has only been observed once, I'm going to downgrade it from a release blocker. |
I suppose this could theoretically be a race condition. In any case bumping to 1.14. |
@ianlancetaylor Do you mean a race between cmd/compile and background GC threads? Like @aclements mentions, I believe cmd/compile is single-threaded during sinit.go. It was previously multi-threaded during parsing and AST translation (noder.go)... but if we constructed a bad AST, we should have tripped up during typecheck (which is also single-threaded). |
Sorry, I missed that the compiler was single-threaded at that point. |
In that case I think that has to be a fluke. Closing. We can reopen if we see it again. |
Seen on the
darwin-amd64-10_11
builder in https://build.golang.org/log/671c132f280f43cdb546ef72c83902b21b324923:The call in question was added in CL 151599 for #23781 (released in Go 1.12).
CC @griesemer @mdempsky @randall77
The text was updated successfully, but these errors were encountered: