Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
runtime: fault in runtime.mapiternext #14904
Comments
|
Go 1.5.3 is fine, Go 1.6 is fine. I'm trying to bisect now. |
ianlancetaylor
added this to the Go1.7 milestone
Mar 22, 2016
|
I've bisected this as far as 481fe59. However, for possibly unrelated reasons, the test suite I am using to verify this fault does not run (fails to connect to the database on startup). I believe that this is an unrelated failure, but it prevents me from making a more accurate bisection. With that said, disabling ssa at this commit stops the crash. |
|
Please disregard the previous comment, the problem is much earlier than 481fe59 |
|
I'm sorry to report that the offending revision is 9d854fd, the SSA merge. If anyone wants to investigate I can configure a AWS VM with an environment to reproduce the problem. |
|
|
Setting |
|
This looks like corruption of the hash map header. The buckets field is junk. |
|
Current suspect: github.com/juju/juju/apiserver/client/status.go:(*statusContext).processService
It's basically doing processedStatus = processedStatus using DUFFCOPY, but the VARDEF at the start tells the live variable analysis that processedStatus is dead before this code. Thus the GC won't scan any pointers in this structure, and it contains (among other things) maps. So named return values being copied to themselves in a return statement may be buggy. I'll try to make a small repro and a fix tomorrow. Changing "return processedStatus" to "return" fixed everything. Someone might want to do that to the juju sources, as it is better style and matches the other returns in the function. But I'll definitely fix this on the SSA end, we should generate correct code regardless. |
randall77
self-assigned this
Mar 24, 2016
|
Thanks Keith. I'll make that change now as a workaround. On Thu, Mar 24, 2016 at 4:07 PM, Keith Randall notifications@github.com
|
added a commit
to davecheney/juju
that referenced
this issue
Mar 24, 2016
davecheney
referenced this issue
in juju/juju
Mar 24, 2016
Merged
apiserver/client: work around compiler bug with named return values #4887
added a commit
to juju/juju
that referenced
this issue
Mar 24, 2016
gopherbot
commented
Mar 28, 2016
|
CL https://golang.org/cl/21233 mentions this issue. |
pushed a commit
that referenced
this issue
Mar 31, 2016
gopherbot
commented
Apr 2, 2016
|
CL https://golang.org/cl/21470 mentions this issue. |
davecheney commentedMar 22, 2016
Please answer these questions before submitting your issue. Thanks!
go version)?go linux/amd64, rev d4663e1
go env)?linux/amd64
What did you do?
cd $GOPATH/src/github.com/juju/juju/cmd/juju/status
go test -i -v . && go test -count=20
Unfortunately reproducing this bug requires our monstrous test suite. For those who want to reproduce the issue I can setup a AWS instance with the correct dependencies.
tests pass
/cc @khr @aclements