ebitengine / purego

Apache License 2.0
1.95k stars 63 forks source link

`go test` fails on Arm Windows #205

Closed hajimehoshi closed 5 months ago

hajimehoshi commented 5 months ago
> go version
go version go1.21.6 windows/arm64
> go test .
fatal error: cgocall nil

goroutine 6 [running]:
runtime.throw({0x7ff65fea51a2?, 0x7ff65fe69290?})
        C:/Program Files/Go/src/runtime/panic.go:1077 +0x40 fp=0x40001174e0 sp=0x40001174b0 pc=0x7ff65fd987d0
runtime.cgocall(0x0?, 0x400001e2f0?)
        C:/Program Files/Go/src/runtime/cgocall.go:130 +0x128 fp=0x4000117520 sp=0x40001174e0 pc=0x7ff65fd64548
github.com/ebitengine/purego.RegisterFunc.func4({0x4000004150?, 0x1?, 0x1?})
        //Mac/Home/purego/func.go:272 +0x83c fp=0x4000117920 sp=0x4000117520 pc=0x7ff65fe693ac
reflect.callReflect(0x4000018720, 0x4000117f08, 0x4000117d68, 0x4000117d70)
        C:/Program Files/Go/src/reflect/value.go:782 +0x3f0 fp=0x4000117d10 sp=0x4000117920 pc=0x7ff65fe07320
reflect.callReflect(0x4000018720, 0x4000117f08, 0x4000117d68, 0x4000117d70)
        <autogenerated>:1 +0x28 fp=0x4000117d40 sp=0x4000117d10 pc=0x7ff65fe0b8a8
reflect.makeFuncStub()
        C:/Program Files/Go/src/reflect/asm_arm64.s:48 +0x58 fp=0x4000117f00 sp=0x4000117d40 pc=0x7ff65fe0b248
github.com/ebitengine/purego_test.TestRegisterFunc(0x4000031520)
        //Mac/Home/purego/func_test.go:46 +0xbc fp=0x4000117f60 sp=0x4000117f00 pc=0x7ff65fe6b37c
testing.tRunner(0x4000031520, 0x7ff65feb2dc0)
        C:/Program Files/Go/src/testing/testing.go:1595 +0xe8 fp=0x4000117fb0 sp=0x4000117f60 pc=0x7ff65fe2b108
testing.(*T).Run.func1()
        C:/Program Files/Go/src/testing/testing.go:1648 +0x2c fp=0x4000117fd0 sp=0x4000117fb0 pc=0x7ff65fe2bf1c
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_arm64.s:1197 +0x4 fp=0x4000117fd0 sp=0x4000117fd0 pc=0x7ff65fdcaae4
created by testing.(*T).Run in goroutine 1
        C:/Program Files/Go/src/testing/testing.go:1648 +0x33c

goroutine 1 [chan receive]:
runtime.gopark(0x400006d9b8?, 0x7ff65fd6d15c?, 0x38?, 0x41?, 0x18?)
        C:/Program Files/Go/src/runtime/proc.go:398 +0xc8 fp=0x400006d940 sp=0x400006d920 pc=0x7ff65fd9b388
runtime.chanrecv(0x400003e0e0, 0x400006da3f, 0x1)
        C:/Program Files/Go/src/runtime/chan.go:583 +0x424 fp=0x400006d9c0 sp=0x400006d940 pc=0x7ff65fd65f54
runtime.chanrecv1(0x7ff65ffb3de0?, 0x7ff65fe7af80?)
        C:/Program Files/Go/src/runtime/chan.go:442 +0x14 fp=0x400006d9f0 sp=0x400006d9c0 pc=0x7ff65fd65b24
testing.(*T).Run(0x4000031380, {0x7ff65fea6a0f?, 0x65acb621?}, 0x7ff65feb2dc0)
        C:/Program Files/Go/src/testing/testing.go:1649 +0x350 fp=0x400006dab0 sp=0x400006d9f0 pc=0x7ff65fe2bde0
testing.runTests.func1(0x4000031380?)
        C:/Program Files/Go/src/testing/testing.go:2054 +0x48 fp=0x400006db00 sp=0x400006dab0 pc=0x7ff65fe2dbb8
testing.tRunner(0x4000031380, 0x400006dc28)
        C:/Program Files/Go/src/testing/testing.go:1595 +0xe8 fp=0x400006db50 sp=0x400006db00 pc=0x7ff65fe2b108
testing.runTests(0x4000050320?, {0x7ff65ffafa20, 0x5, 0x5}, {0x40?, 0x7ff65fe942a0?, 0x7ff65ffb4020?})
        C:/Program Files/Go/src/testing/testing.go:2052 +0x3b4 fp=0x400006dc50 sp=0x400006db50 pc=0x7ff65fe2dab4
testing.(*M).Run(0x4000050320)
        C:/Program Files/Go/src/testing/testing.go:1925 +0x538 fp=0x400006dea0 sp=0x400006dc50 pc=0x7ff65fe2c788
main.main()
        _testmain.go:59 +0x1a8 fp=0x400006df30 sp=0x400006dea0 pc=0x7ff65fe6bfe8
runtime.main()
        C:/Program Files/Go/src/runtime/proc.go:267 +0x2a4 fp=0x400006dfd0 sp=0x400006df30 pc=0x7ff65fd9af44
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_arm64.s:1197 +0x4 fp=0x400006dfd0 sp=0x400006dfd0 pc=0x7ff65fdcaae4

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        C:/Program Files/Go/src/runtime/proc.go:398 +0xc8 fp=0x4000033f90 sp=0x4000033f70 pc=0x7ff65fd9b388
runtime.goparkunlock(...)
        C:/Program Files/Go/src/runtime/proc.go:404
runtime.forcegchelper()
        C:/Program Files/Go/src/runtime/proc.go:322 +0xb8 fp=0x4000033fd0 sp=0x4000033f90 pc=0x7ff65fd9b1e8
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_arm64.s:1197 +0x4 fp=0x4000033fd0 sp=0x4000033fd0 pc=0x7ff65fdcaae4
created by runtime.init.6 in goroutine 1
        C:/Program Files/Go/src/runtime/proc.go:310 +0x24

goroutine 3 [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        C:/Program Files/Go/src/runtime/proc.go:398 +0xc8 fp=0x4000035f60 sp=0x4000035f40 pc=0x7ff65fd9b388
runtime.goparkunlock(...)
        C:/Program Files/Go/src/runtime/proc.go:404
runtime.bgsweep(0x0?)
        C:/Program Files/Go/src/runtime/mgcsweep.go:280 +0xa0 fp=0x4000035fb0 sp=0x4000035f60 pc=0x7ff65fd84620
runtime.gcenable.func1()
        C:/Program Files/Go/src/runtime/mgc.go:200 +0x28 fp=0x4000035fd0 sp=0x4000035fb0 pc=0x7ff65fd79108
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_arm64.s:1197 +0x4 fp=0x4000035fd0 sp=0x4000035fd0 pc=0x7ff65fdcaae4
created by runtime.gcenable in goroutine 1
        C:/Program Files/Go/src/runtime/mgc.go:200 +0x6c

goroutine 4 [GC scavenge wait]:
runtime.gopark(0x400003e000?, 0x7ff65fed79a0?, 0x1?, 0x0?, 0x4000030b60?)
        C:/Program Files/Go/src/runtime/proc.go:398 +0xc8 fp=0x4000045f50 sp=0x4000045f30 pc=0x7ff65fd9b388
runtime.goparkunlock(...)
        C:/Program Files/Go/src/runtime/proc.go:404
runtime.(*scavengerState).park(0x7ff65ffb40a0)
        C:/Program Files/Go/src/runtime/mgcscavenge.go:425 +0x5c fp=0x4000045f80 sp=0x4000045f50 pc=0x7ff65fd81eec
runtime.bgscavenge(0x0?)
        C:/Program Files/Go/src/runtime/mgcscavenge.go:653 +0x44 fp=0x4000045fb0 sp=0x4000045f80 pc=0x7ff65fd82434
runtime.gcenable.func2()
        C:/Program Files/Go/src/runtime/mgc.go:201 +0x28 fp=0x4000045fd0 sp=0x4000045fb0 pc=0x7ff65fd790a8
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_arm64.s:1197 +0x4 fp=0x4000045fd0 sp=0x4000045fd0 pc=0x7ff65fdcaae4
created by runtime.gcenable in goroutine 1
        C:/Program Files/Go/src/runtime/mgc.go:201 +0xac

goroutine 5 [finalizer wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        C:/Program Files/Go/src/runtime/proc.go:398 +0xc8 fp=0x4000037d80 sp=0x4000037d60 pc=0x7ff65fd9b388
runtime.runfinq()
        C:/Program Files/Go/src/runtime/mfinal.go:193 +0x108 fp=0x4000037fd0 sp=0x4000037d80 pc=0x7ff65fd781f8
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_arm64.s:1197 +0x4 fp=0x4000037fd0 sp=0x4000037fd0 pc=0x7ff65fdcaae4
created by runtime.createfing in goroutine 1
        C:/Program Files/Go/src/runtime/mfinal.go:163 +0x80
FAIL    github.com/ebitengine/purego    0.064s
FAIL
hajimehoshi commented 5 months ago

eff418c3e3191a8f0f43ca303d809bb54bd2d1f9 is the first bad commit:

commit eff418c3e3191a8f0f43ca303d809bb54bd2d1f9
Author: TotallyGamerJet <TotallyGamerJet@users.noreply.github.com>
Date:   Sat Jan 20 12:01:44 2024 -0500

    remove unnecessary separation (#204)

 sys_arm64.s      | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 sys_unix_arm64.s | 70 --------------------------------------------------------
 2 files changed, 64 insertions(+), 71 deletions(-)
 delete mode 100644 sys_unix_arm64.s

I'll revert the commit.