libretro / libretro/ps2

God of War crashes just after boot on Android (Adreno 740)

Open
#159 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
85
Forks
26
Avg merge
6h 43m
Merged PRs (30d)
6

Description

Moved from WizzardSK/pcee2-libretro#30, where it was filed against the wrong core. Reported by @Bernstein94; the log there loads pcsx2_libretro_android.so and writes saves under RetroArch/saves/LRPS2/, so it belongs here.

Symptom

God of War (USA) boots and then crashes shortly after. The reporter also mentions GTA Vice City booting with uneven audio, which may or may not be the same underlying cause.

Environment
  • RetroArch 1.22.2, Android 16, arm64-v8a, sideload
  • Xiaomi 23113RKC6C, Adreno 740
  • Vulkan display driver, OpenSL audio
  • God of War (USA), SCUS-97399, ELF CRC D6385328
  • Fastmem enabled; GameDB applied alignSprite, roundSprite and autoFlush
What the log shows

retroarch.log from the original report.

Nothing about the crash itself. The log stops mid-sentence in the middle of repeated

microVU1: 2 cycle stall on branch instruction [03b0]
microVU1: 1 cycle stall on branch instruction [0538]
microVU1: 3 cycle stall on branch instruction [0588]

which is what a hard native crash looks like from RetroArch’s side: RetroArch cannot log a signal that kills the process, and until #158 the core installed no reporter of its own — the only sigaction in the tree is the fastmem page fault filter. So there is no fault address and no program counter to work from yet.

What can be said is that the last thing the core did before dying was microVU1 compiling VU1 programs.

Next steps

Waiting on the reporter for adb logcat or a tombstone, and for the result of three core option changes, each of which rules something in or out:

  • MTVU off. On arm64 this defaults to on whenever the native VU1 recompiler drives VU1. First suspect, and the most likely explanation for the Vice City audio too.
  • VU1 softfloat on. Takes the VU1 recompiler out of the picture; if the game then boots, this is VU1 codegen.
  • EE = Interpreter. Removes the EE recompiler entirely; a crash that survives it is not EE codegen.

#158 adds a crash handler that will answer the main question directly on the next report — whether the program counter was inside the core’s own text or inside generated code.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the attached retroarch.log and the microVU1 VU1-compilation messages, then reproduce with adb logcat or a tombstone when available. Test MTVU off, VU1 softfloat on, and EE = Interpreter; completion requires identifying whether the crash is in the core or generated code, using the crash handler added by #158.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, cpp
Domain
game-dev, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.