Emulator Issues #13444
closedArm64 JIT goes into a broken state after an ISI exception occurs
0%
Description
Game Name?
Any
Game ID? (right click the game in the game list, Properties, Info tab)
Any
MD5 Hash? (right click the game in the game list, Properties, Verify tab, Verify Integrity button)
N/A
What's the problem? Describe what went wrong.
When an ISI exception occurs Dolphin can crash on any load or store in the exception handler due to using the wrong memory base.
What steps will reproduce the problem?
Using the following gecko code when the ARM64 JIT is selected and fastmem is enabled will crash Dolphin in any game.
04000400 808000c0
04000404 48000000
c0000000 00000001
48000002 00000000
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
The issue is present in 5.0-20842
If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)
8bfcd2deb76c542cf3b4a5bd2d6176243243e04b
What are your PC specifications? (CPU, GPU, Operating System, more)
Apple M2
MacOS Sonoma 14.1.1
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
40:39:593 Core/PowerPC/JitArm64/Jit.cpp:134 E[JIT]: JitArm64 address calculation overflowed. This should never happen! PC 0x000000013a001ec8, access address 0x00000004902bc0c0, memory base 0x00000003102bc000, MSR.DR 0, mem_ptr 0x3102bc000, pbase 0x3102bc000, lbase 0x4902bc000
40:39:593 Core/PowerPC/JitArm64/Jit.cpp:145 E[JIT]: Exception handler - Unhandled fault
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R0: 0x00000000000000c0 R1: 0x0000000fffffc118
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R2: 0x0000000187e01a24 R3: 0x00000001e21206a0
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R4: 0x0000000000000000 R5: 0x0000000000000000
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R6: 0x3030343030303030 R7: 0x0000000000000010
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R8: 0x0000000000000000 R9: 0x2010002030100000
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R10: 0x00000000000e0100 R11: 0x0000000000000001
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R12: 0x0000000000000000 R13: 0x00000001016a8334
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R14: 0x00000001016a8345 R15: 0x0000000000000005
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R16: 0x0000000188149db4 R17: 0x0000000000000238
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R18: 0x0000000000000000 R19: 0x0000000000000000
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R20: 0x0000000000000000 R21: 0x0000000000000000
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R22: 0x0000000080000000 R23: 0x0000000000000000
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R24: 0x0000000000000000 R25: 0x0000000000000800
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R26: 0x0000000000000400 R27: 0x0000000000000000
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:32 E[JIT]: R28: 0x00000004902bc000 R29: 0x00000001502b6290
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:35 E[JIT]: R30: 0x000000013a001ec4 SP: 0x000000016fdbeac0
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:37 E[JIT]: Access Address: 0x00000004902bc0c0
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:38 E[JIT]: PC: 0x000000013a001ec8
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:40 E[JIT]: Memory Around PC
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:50 E[JIT]: 0x000000013a001ea8: b902efa0 5280001a 72a0001a 17fffc53
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:50 E[JIT]: 0x000000013a001eb8: 54000065 5280801a 17fffc6e d2801800
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:50 E[JIT]: 0x000000013a001ec8: b8606b9b 5ac00b7b b9002bbb b942efa0
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:50 E[JIT]: 0x000000013a001ed8: 71001000 b902efa0 5280809a 72a0001a
40:39:593 Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp:53 E[JIT]: Full block: a0ef02b91a0080521a00a07253fcff17650000541a8080526efcff17001880d29b6b60b87b0bc05abb2b00b9a0ef42b900100071a0ef02b99a8080521a00a072
Updated by JosJuice 12 months ago
Could you test if this fixes it? https://github.com/dolphin-emu/dolphin/pull/12464