Skip to content

runtime: unknown argument frame size for reflect.methodValueCall #5954

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
davecheney opened this issue Jul 25, 2013 · 6 comments
Closed

runtime: unknown argument frame size for reflect.methodValueCall #5954

davecheney opened this issue Jul 25, 2013 · 6 comments
Milestone

Comments

@davecheney
Copy link
Contributor

What steps will reproduce the problem?

Commit c8e02f321281 triggered a runtime error. I believe the commit was unrelated to the
failure as other arm systems passed the build fine and the commit was not related to the
failure.

See http://build.golang.org/log/0f61682464173e4c05f82f74fe63c1961b574ba7

runtime: unknown argument frame size for reflect.methodValueCall called from 0x7845c
[reflect_test.func·009]
fatal error: invalid stack

goroutine 40 [garbage collection]:
runtime.gc(0x0)
        /usr/local/go/src/pkg/runtime/mgc0.c:2031 +0x1bc fp=0xb6ed0b8c
runtime.mallocgc(0x20, 0x0, 0x1, 0x1)
        /usr/local/go/src/pkg/runtime/malloc.goc:121 +0x1f0 fp=0xb6ed0bc0
cnew(0x148140, 0x5, 0x1)
        /usr/local/go/src/pkg/runtime/malloc.goc:818 +0xe8 fp=0xb6ed0bec
runtime.cnewarray(0x148140, 0x5)
        /usr/local/go/src/pkg/runtime/malloc.goc:837 +0x3c fp=0xb6ed0bfc
makeslice1(0x143bb8, 0x5, 0x5, 0xb6ed0c40)
        /usr/local/go/src/pkg/runtime/slice.c:56 +0x50 fp=0xb6ed0c08
runtime.makeslice(0x143bb8, 0x5, 0x0, 0x5, 0x0, ...)
        /usr/local/go/src/pkg/runtime/slice.c:37 +0x1b8 fp=0xb6ed0c28
reflect.callMethod(0x1060afe0, 0xb6ed0c88)
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/value.go:662 +0xdc fp=0xb6ed0c78
runtime: unknown argument frame size for reflect.methodValueCall called from 0x7845c
[reflect_test.func·009]
reflect.methodValueCall()
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/asm_arm.s:22 +0x14 fp=0xb6ed0c84
reflect_test.func·009(0x1066c600, 0x8, 0x1060afe0, 0x28)
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/all_test.go:1714 +0x48 fp=0xb6ed0cdc
reflect_test.func·010(0x10677968, 0x6, 0x15e000, 0x10677960, 0x142, ...)
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/all_test.go:1728 +0x488 fp=0xb6ed0dd0
reflect_test.func·011(0x175fa8, 0x2, 0x165548, 0x106778b0, 0x28)
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/all_test.go:1737 +0x1d0 fp=0xb6ed0e24
reflect_test.TestMethod5(0x1065ca20)
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/all_test.go:1771 +0x820 fp=0xb6ed0f98
testing.tRunner(0x1065ca20, 0x2b4ecc)
        /usr/local/go/src/pkg/testing/testing.go:360 +0xc4 fp=0xb6ed0fc4
runtime.goexit()
        /usr/local/go/src/pkg/runtime/proc.c:1313 fp=0xb6ed0fc4
created by testing.RunTests
        /usr/local/go/src/pkg/testing/testing.go:440 +0x6c4

goroutine 1 [chan receive]:
testing.RunTests(0x1a7748, 0x2b4d28, 0x4e, 0x4e, 0x1)
        /usr/local/go/src/pkg/testing/testing.go:441 +0x6e4
testing.Main(0x1a7748, 0x2b4d28, 0x4e, 0x4e, 0x2b1ce0, ...)
        /usr/local/go/src/pkg/testing/testing.go:372 +0x6c
main.main()
        reflect/_test/_testmain.go:209 +0x98

goroutine 35 [sleep]:
time.Sleep(0x3b9aca00, 0x0)
        /usr/local/go/src/pkg/runtime/time.goc:26 +0x3c
reflect_test.selectWatcher()
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/all_test.go:1346 +0x34
created by reflect_test.func·003
        /home/dfc/workspace/linux-arm-cheney-panda-c8e02f321281/go/src/pkg/reflect/all_test.go:1076 +0x3c
@davecheney
Copy link
Contributor Author

Comment 1:

Just hit this again on linux/arm arm5
runtime: unknown argument frame size for reflect.methodValueCall called from 0x7d63c
[reflect_test.func·009]
fatal error: invalid stack
goroutine 40 [garbage collection]:
runtime.gc(0x0)
    /home/dfc/go/src/pkg/runtime/mgc0.c:2031 +0x1bc fp=0xb6f6fb8c
runtime.mallocgc(0x20, 0x0, 0x1, 0x1)
    /home/dfc/go/src/pkg/runtime/malloc.goc:121 +0x1f0 fp=0xb6f6fbc0
cnew(0x14e140, 0x5, 0x1)
    /home/dfc/go/src/pkg/runtime/malloc.goc:818 +0xe8 fp=0xb6f6fbec
runtime.cnewarray(0x14e140, 0x5)
    /home/dfc/go/src/pkg/runtime/malloc.goc:837 +0x3c fp=0xb6f6fbfc
makeslice1(0x149bb8, 0x5, 0x5, 0xb6f6fc40)
    /home/dfc/go/src/pkg/runtime/slice.c:56 +0x50 fp=0xb6f6fc08
runtime.makeslice(0x149bb8, 0x5, 0x0, 0x5, 0x0, ...)
    /home/dfc/go/src/pkg/runtime/slice.c:37 +0x1b8 fp=0xb6f6fc28
reflect.callMethod(0x1060afe0, 0xb6f6fc88)
    /home/dfc/go/src/pkg/reflect/value.go:662 +0xdc fp=0xb6f6fc78
runtime: unknown argument frame size for reflect.methodValueCall called from 0x7d63c
[reflect_test.func·009]
reflect.methodValueCall()
    /home/dfc/go/src/pkg/reflect/asm_arm.s:22 +0x14 fp=0xb6f6fc84
reflect_test.func·009(0x10689f98, 0x5, 0x1060afe0, 0x28)
    /home/dfc/go/src/pkg/reflect/all_test.go:1714 +0x48 fp=0xb6f6fcdc
reflect_test.func·010(0x17a6e8, 0x3, 0x1648c0, 0x10689ee8, 0x160, ...)
    /home/dfc/go/src/pkg/reflect/all_test.go:1728 +0x488 fp=0xb6f6fdd0
reflect_test.func·011(0x17a6e8, 0x3, 0x1648c0, 0x10689ee8, 0x28)
    /home/dfc/go/src/pkg/reflect/all_test.go:1736 +0xd0 fp=0xb6f6fe24
reflect_test.TestMethod5(0x106745a0)
    /home/dfc/go/src/pkg/reflect/all_test.go:1772 +0x86c fp=0xb6f6ff98
testing.tRunner(0x106745a0, 0x2bcf24)
    /home/dfc/go/src/pkg/testing/testing.go:360 +0xc4 fp=0xb6f6ffc4
runtime.goexit()
    /home/dfc/go/src/pkg/runtime/proc.c:1313 fp=0xb6f6ffc4
created by testing.RunTests
    /home/dfc/go/src/pkg/testing/testing.go:440 +0x6c4
goroutine 1 [chan receive]:
testing.RunTests(0x1ad810, 0x2bcd80, 0x4e, 0x4e, 0x1)
    /home/dfc/go/src/pkg/testing/testing.go:441 +0x6e4
testing.Main(0x1ad810, 0x2bcd80, 0x4e, 0x4e, 0x2b9d38, ...)
    /home/dfc/go/src/pkg/testing/testing.go:372 +0x6c
main.main()
    reflect/_test/_testmain.go:209 +0x98
goroutine 35 [sleep]:
time.Sleep(0x3b9aca00, 0x0)
    /home/dfc/go/src/pkg/runtime/time.goc:26 +0x3c
reflect_test.selectWatcher()
    /home/dfc/go/src/pkg/reflect/all_test.go:1346 +0x34
created by reflect_test.func·003
    /home/dfc/go/src/pkg/reflect/all_test.go:1076 +0x3c
FAIL    reflect 0.110s

@remyoudompheng
Copy link
Contributor

Comment 2:

I managed to reproduce reliably on 386 by running:
GOGC=1 go test -v -run Method reflect
I think this issue can somewhat be merged with issue #5734 and issue #5828.
See https://golang.org/cl/11998043 for a possible fix.

@davecheney
Copy link
Contributor Author

Comment 3:

Thank Rémy, I'll try that on my arm systems. 
If frame sizes are mandatory now, should the assembler reject asm methods that lack them
?

@davecheney
Copy link
Contributor Author

Comment 4:

Another related failure:
http://build.golang.org/log/b484fa1e3dc646557240ef5950212909bb504902
Rémy has a fix here: https://golang.org/cl/11998043

Labels changed: added priority-soon, removed priority-triage.

Owner changed to @remyoudompheng.

Status changed to Started.

@dvyukov
Copy link
Member

dvyukov commented Jul 31, 2013

Comment 5:

Another fix:
https://golang.org/cl/12163043

@dvyukov
Copy link
Member

dvyukov commented Jul 31, 2013

Comment 6:

This issue was closed by revision 8679d5f.

Status changed to Fixed.

@rsc rsc added this to the Go1.2 milestone Apr 14, 2015
@rsc rsc removed the go1.2 label Apr 14, 2015
@golang golang locked and limited conversation to collaborators Jun 24, 2016
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

5 participants