libretro / mgba

mGBA Game Boy Advance Emulator
https://mgba.io/
Mozilla Public License 2.0
68 stars 73 forks source link

Core crashes when starting a game #146

Closed kivutar closed 5 years ago

kivutar commented 5 years ago

I could reproduce it on Ludo for Raspberry Pi, and sometimes on OSX:

Apr 23 14:45:45 LudOS ludo[636]: 2019/04/23 14:45:45 [Core]: Game loaded: /storage/roms/Nintendo - Game Boy Advance/Final Fantasy IV Advance (Europe) (En,Fr,De,Es,It).zip
Apr 23 14:45:45 LudOS ludo[636]: unexpected fault address 0x7eec6000
Apr 23 14:45:45 LudOS ludo[636]: fatal error: fault
Apr 23 14:45:45 LudOS ludo[636]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x7eec6000 pc=0x87d4c]
Apr 23 14:45:45 LudOS ludo[636]: goroutine 1 [running, locked to thread]:
Apr 23 14:45:45 LudOS ludo[636]: runtime.throw(0x3ce712, 0x5)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/panic.go:617 +0x5c fp=0x5817d90 sp=0x5817d7c pc=0x5bf38
Apr 23 14:45:45 LudOS ludo[636]: runtime.sigpanic()
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/signal_unix.go:397 +0x360 fp=0x5817da8 sp=0x5817d90 pc=0x71154
Apr 23 14:45:45 LudOS ludo[636]: runtime.memmove(0x2881000, 0x7eec51fc, 0x1000)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/memmove_arm.s:141 +0xc4 fp=0x5817db4 sp=0x5817dac pc=0x87d4c
Apr 23 14:45:45 LudOS ludo[636]: runtime.gobytes(0x7eec51fc, 0x1000, 0x0, 0x0, 0x0)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/string.go:307 +0x78 fp=0x5817dcc sp=0x5817db4 pc=0x7638c
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/libretro._Cfunc_GoBytes(...)
Apr 23 14:45:45 LudOS ludo[636]:         _cgo_gotypes.go:255
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/libretro.coreAudioSampleBatch.func1(0x7eec51fc, 0x201f93c, 0x201f93c, 0x5817e00)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/libretro/libretro.go:523 +0x50 fp=0x5817de4 sp=0x5817dcc pc=0x2690cc
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/libretro.coreAudioSampleBatch(0x7eec51fc, 0x200, 0x2000128)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/libretro/libretro.go:523 +0x2c fp=0x5817dfc sp=0x5817de4 pc=0x267ed4
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/libretro._cgoexpwrap_2efb85441763_coreAudioSampleBatch(0x7eec51fc, 0x200, 0x76f7b900)
Apr 23 14:45:45 LudOS ludo[636]:         _cgo_gotypes.go:728 +0x24 fp=0x5817e0c sp=0x5817dfc pc=0x266ce4
Apr 23 14:45:45 LudOS ludo[636]: runtime.call16(0x0, 0x7eec5140, 0x7eec51d4, 0xc, 0x0)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/asm_arm.s:516 +0x4c fp=0x5817e20 sp=0x5817e0c pc=0x85ae8
Apr 23 14:45:45 LudOS ludo[636]: runtime.cgocallbackg1(0x0)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/cgocall.go:314 +0x140 fp=0x5817e5c sp=0x5817e20 pc=0x32414
Apr 23 14:45:45 LudOS ludo[636]: runtime.cgocallbackg(0x0)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/cgocall.go:191 +0x9c fp=0x5817e8c sp=0x5817e5c pc=0x32260
Apr 23 14:45:45 LudOS ludo[636]: runtime.cgocallback_gofunc(0x266058, 0x318c80, 0x5817ecc, 0x26860c)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/asm_arm.s:746 +0x74 fp=0x5817e98 sp=0x5817e8c pc=0x87438
Apr 23 14:45:45 LudOS ludo[636]: runtime.asmcgocall(0x318c80, 0x5817ecc, 0x26860c)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/asm_arm.s:600 +0x3c fp=0x5817e9c sp=0x5817e98 pc=0x8730c
Apr 23 14:45:45 LudOS ludo[636]: runtime.cgocall(0x318c80, 0x5817ecc, 0x2ce998)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/cgocall.go:131 +0x7c fp=0x5817eb4 sp=0x5817e9c pc=0x32154
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/libretro._Cfunc_bridge_retro_run(0x58e8f96d)
Apr 23 14:45:45 LudOS ludo[636]:         _cgo_gotypes.go:438 +0x30 fp=0x5817ec8 sp=0x5817eb4 pc=0x266058
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/libretro.(*Core).Run.func1(0x2090600)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/libretro/libretro.go:329 +0x4c fp=0x5817ee4 sp=0x5817ec8 pc=0x268618
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/libretro.(*Core).Run(0x2090600)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/libretro/libretro.go:329 +0x1c fp=0x5817eec sp=0x5817ee4 pc=0x267714
Apr 23 14:45:45 LudOS ludo[636]: main.runLoop(0x2090480)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/main.go:36 +0x13c fp=0x5817f54 sp=0x5817eec pc=0x306d88
Apr 23 14:45:45 LudOS ludo[636]: main.main()
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/main.go:124 +0x56c fp=0x5817fc4 sp=0x5817f54 pc=0x3073dc
Apr 23 14:45:45 LudOS ludo[636]: runtime.main()
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/proc.go:200 +0x204 fp=0x5817fe4 sp=0x5817fc4 pc=0x5d7d8
Apr 23 14:45:45 LudOS ludo[636]: runtime.goexit()
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/.gimme/versions/go1.12.linux.amd64/src/runtime/asm_arm.s:868 +0x4 fp=0x5817fe4 sp=0x5817fe4 pc=0x8755c
Apr 23 14:45:45 LudOS ludo[636]: goroutine 51 [chan receive]:
Apr 23 14:45:45 LudOS ludo[636]: github.com/libretro/ludo/core.Init.func1(0x54b4c60)
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/core/core.go:45 +0x40
Apr 23 14:45:45 LudOS ludo[636]: created by github.com/libretro/ludo/core.Init
Apr 23 14:45:45 LudOS ludo[636]:         /home/travis/gopath/src/github.com/libretro/ludo/core/core.go:44 +0x7c
Apr 23 14:45:45 LudOS systemd[1]: ludo.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

It wasn't happening with the version of two weeks ago.

kivutar commented 5 years ago

On Discord, coldbrewed reported:

@kivutar I built the latest ludo, then the .app bundle. mbga seems to work fine for me when I launch the app bundle, either from finder or from command line with open command
I did load core -> mgba, then loaded a game
this is on 10.14.4
sorry - I just realized I had an old mgba core in the cores dir. I put the latest nightly in there and can in fact reproduce now.
kivutar commented 5 years ago

Fixed on my side, it was related to the audio_batch callback