Files
ARMSX3/Utilities
jpolo1224 7daa89e0e7 Give the SIGSEGV handler a stack to report from
Arkham City dies of SIGSEGV about 140ms after the game writes PS3Progress_Frame_1,
on both the Qualcomm driver and Turnip, with the database on or off, Multithreaded
RSX on or off, and the RSX profiler on or off. A table of ten runs showed no setting
correlates with it.

The reason it took so long to even establish that it WAS a segfault: nothing records
it. No tombstone (/data/tombstones is root-only, so its emptiness proves nothing), no
logcat crash-buffer entry, and no line from our own handler. The single witness
anywhere is Zygote:

    I Zygote : Process <pid> exited due to signal 11 (Segmentation fault)

That combination is what a stack overflow looks like here. The handler is installed
with SA_SIGINFO alone, so it runs on the faulting thread's own stack; if that stack is
what overflowed there is nowhere to run, it faults again immediately, and the kernel
applies the default action having written nothing.

So: an alternate signal stack per thread in thread_base::initialize, and SA_ONSTACK on
the handler. Thread-local rather than shared, because two threads can fault at once and
a shared stack would corrupt whichever report lost the race.

This does not fix the fault. It makes the fault reportable, which is the thing that has
been missing all along: the next occurrence should log where it came from instead of
vanishing. Android only.
2026-08-08 20:12:08 -04:00
..
2026-03-01 09:20:32 +02:00
2025-02-11 20:38:35 +01:00
2026-06-16 01:28:35 +02:00
2025-02-11 20:38:35 +01:00
2026-06-14 17:41:33 +02:00
2026-05-08 21:42:29 +02:00
2026-07-15 15:19:36 +02:00
2026-07-28 21:24:05 +02:00
2025-02-11 20:38:35 +01:00
2026-04-22 15:06:02 +02:00
2026-04-22 15:06:02 +02:00
2023-09-11 15:44:33 +03:00
2026-06-13 19:08:16 +02:00
2026-06-16 12:07:57 +02:00
2026-05-13 11:43:32 +03:00
2026-04-30 20:41:35 +02:00
2026-06-13 19:08:16 +02:00
2026-06-18 21:16:12 +02:00
2026-06-18 21:16:12 +02:00