Skip to content

runtime: leftover panics in traceback on nacl/amd64p32 #8199

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

Closed
rsc opened this issue Jun 13, 2014 · 4 comments
Closed

runtime: leftover panics in traceback on nacl/amd64p32 #8199

rsc opened this issue Jun 13, 2014 · 4 comments

Comments

@rsc
Copy link
Contributor

rsc commented Jun 13, 2014

from the nacl/amd64p32 builder.
http://build.golang.org/log/91208176ac2dab8eb7942edb289e1bb48cbeb7e1

The bug is that traceback_x86.c says sparg += 2*sizeof(uintreg) instead of
2*sizeof(uintptr) in the if(wasnewproc) case. However, since this is only NaCl, I am not
going to hold up 1.3 any longer. This can be fixed in 1.3.1.

# GOMAXPROCS=2 runtime -cpu=1,2,4
runtime: g10914: leftover defer argp=0xfeef3f38 pc=0x94480
    defer 0x119f8090 argp=0xfeef3f38 pc=0x94480
    defer 0x110b53c0 argp=0xfeef3f98 pc=0x76dc0
fatal error: traceback has leftover defers or panics

runtime stack:
runtime.throw(0x6e1754, 0x110b53c0)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/panic.c:520 +0xa0 fp=0xfe9efd00 sp=0xfe9efcf0
runtime.gentraceback(0x3cbc0, 0xfeef3f00, 0x0, 0x109028f0, 0x0, 0x0, 0x7fffffff,
0x2c3c0, 0xfe9efe14, 0x0)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/traceback_x86.c:369 +0x5c0 fp=0xfe9efd80 sp=0xfe9efd00
addstackroots(0x109028f0, 0xfe9efe14)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/mgc0.c:1692 +0x1c0 fp=0xfe9efdd0 sp=0xfe9efd80
markroot(0x10910900, 0xa)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/mgc0.c:1321 +0x100 fp=0xfe9efe20 sp=0xfe9efdd0
runtime.parfordo(0x10910900, 0x1)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/parfor.c:88 +0x100 fp=0xfe9efe80 sp=0xfe9efe20
gc(0xfed89e68, 0x110f86e0)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/mgc0.c:2407 +0x300 fp=0xfe9effa8 sp=0xfe9efe80
mgc(0x12258e70, 0x0)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/mgc0.c:2349 +0x40 fp=0xfe9effb8 sp=0xfe9effa8
runtime.mcall(0x0)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/asm_amd64p32.s:160 +0x60 fp=0xfe9effc8 sp=0xfe9effb8

goroutine 54953 [garbage collection]:
runtime.gc(0x0, 0x123c5210)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/mgc0.c:2329 +0x2c0 fp=0xfed89e80 sp=0xfed89e58
runtime.mallocgc(0x10, 0x2a18e0, 0x0, 0x0)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/malloc.goc:205 +0x260 fp=0xfed89ec0 sp=0xfed89e80
runtime.new(0x2a18e0, 0x4, 0x0, 0x150)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/malloc.goc:826 +0x60 fp=0xfed89ed8 sp=0xfed89ec0
reflect.Value.MapIndex(0x254d40, 0x110b40c0, 0x0, 0x150, 0x255b80, 0x0, 0x1c4, 0x20,
0x255b80, 0x0, ...)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/reflect/value.go:1184 +0x40 fp=0xfed89f30 sp=0xfed89ed8
runtime_test.func·044()
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/map_test.go:272 +0x1c0 fp=0xfed89fc8 sp=0xfed89f30
runtime.goexit()
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/proc.c:1445 fp=0xfed89fd0 sp=0xfed89fc8
created by runtime_test.testConcurrentReadsAfterGrowth
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/map_test.go:274 +0x3a0

...


goroutine 10914 [runnable]:
runtime.newproc1(0x1180d610, 0xfeef3f38, 0x0, 0x0, 0x947a0, 0x947a0)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/proc.c:1817 fp=0xfeef3f08 sp=0xfeef3f00
runtime.newproc(0x0, 0x1180d610)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/proc.c:1809 +0x60 fp=0xfeef3f30 sp=0xfeef3f08
runtime_test.testConcurrentReadsAfterGrowth(0x1108a0c0, 0x3701)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/map_test.go:274 +0x3a0 fp=0xfeef3f88 sp=0xfeef3f30
runtime_test.TestConcurrentReadsAfterGrowthReflect(0x1108a0c0, 0xe)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/map_test.go:287 +0x40 fp=0xfeef3f98 sp=0xfeef3f88
testing.tRunner(0x1108a0c0, 0x6e2360)
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/testing/testing.go:422 +0x100 fp=0xfeef3fc0 sp=0xfeef3f98
runtime.goexit()
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/runtime/proc.c:1445 fp=0xfeef3fc8 sp=0xfeef3fc0
created by testing.RunTests
    /tmp/gobuilder/nacl-amd64p32-aa46f025bb46/go/src/pkg/testing/testing.go:504 +0xa60
@rsc
Copy link
Contributor Author

rsc commented Jun 28, 2014

Comment 2:

This issue was closed by revision 84a3643.

Status changed to Fixed.

@rsc
Copy link
Contributor Author

rsc commented Aug 11, 2014

Comment 3:

Trivial fix, no workaround, no effect except on amd64p32.
Approved for Go 1.3.1.

@adg
Copy link
Contributor

adg commented Aug 11, 2014

Comment 4:

This issue was closed by revision 49a793c2151b.

@adg
Copy link
Contributor

adg commented Aug 11, 2014

Comment 5:

Applied to release-branch.go1.3.

@rsc rsc added fixed labels Aug 11, 2014
@rsc rsc added this to the Go1.3.1 milestone Apr 14, 2015
adg added a commit that referenced this issue May 11, 2015
««« CL 102710043 / 5640e19d768d
runtime: fix nacl amd64p32 flakiness

newproc takes two extra pointers, not two extra registers.
On amd64p32 (nacl) they are different.

We diagnosed this before the 1.3 cut but the tree was frozen.
I believe this is causing the random problems on the builder.

Fixes #8199.

TBR=r
CC=golang-codereviews
https://golang.org/cl/102710043
»»»

TBR=rsc
CC=golang-codereviews
https://golang.org/cl/124120044
@golang golang locked and limited conversation to collaborators Jun 25, 2016
wheatman pushed a commit to wheatman/go-akaros that referenced this issue Jun 25, 2018
newproc takes two extra pointers, not two extra registers.
On amd64p32 (nacl) they are different.

We diagnosed this before the 1.3 cut but the tree was frozen.
I believe this is causing the random problems on the builder.

Fixes golang#8199.

TBR=r
CC=golang-codereviews
https://golang.org/cl/102710043
wheatman pushed a commit to wheatman/go-akaros that referenced this issue Jul 9, 2018
newproc takes two extra pointers, not two extra registers.
On amd64p32 (nacl) they are different.

We diagnosed this before the 1.3 cut but the tree was frozen.
I believe this is causing the random problems on the builder.

Fixes golang#8199.

TBR=r
CC=golang-codereviews
https://golang.org/cl/102710043
This issue was closed.
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

3 participants