The SPRX Loader thread spawned in Emulator::Load() invokes
ppu_initialize() and ppu_precompile(), both of which write into the
PPU JIT code cache. On AArch64 Apple Silicon, MAP_JIT pages default
to execute mode for newly created threads, so any write into the
cache from this thread segfaults before the game can boot.
Reproducible on a clean RPCS3 0.0.40-19340 boot of Red Dead
Redemption (BLUS30418) on macOS arm64: the emulator crashes ~12s
into boot with "Segfault writing location 0x300010000" originating
from the {SPRX Loader} thread, never reaching the title screen.
Mirror the W^X handling already used by the PPU thread's
ppu_cmd::initialize handler in PPUThread.cpp: enable write mode at
thread entry and pair it with an RAII guard so execute mode is
restored on every exit path (normal return, early-exit on
Emu.IsStopped(), exception). No effect on x86_64 or non-Apple
ARM64 builds (entire block is inside #ifdef __APPLE__).
|
||
|---|---|---|
| .ci | ||
| .github | ||
| 3rdparty | ||
| bin | ||
| buildfiles | ||
| darwin/util | ||
| rpcs3 | ||
| Utilities | ||
| .clang-format | ||
| .editorconfig | ||
| .gdbinit | ||
| .gitignore | ||
| .gitmodules | ||
| BUILDING.md | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| git-clang-format | ||
| LICENSE | ||
| objdump.cpp | ||
| pre-commit.readme | ||
| README.md | ||
| rpcs3.sln | ||
| usertype.dat | ||
RPCS3
The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows, Linux, macOS and FreeBSD.
You can find some basic information on our website. Game info is being populated on the Wiki. For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our forums and our Discord server.
Support Lead Developers Nekotekina and kd-11 on Patreon
Contributing
If you want to help the project but do not code, the best way to help out is to test games and make bug reports. See:
If you want to contribute as a developer, please take a look at the following pages:
You should also contact any of the developers in the forums or in the Discord server to learn more about the current state of the emulator.
Building
See BUILDING.md for more information about how to setup an environment to build RPCS3.
Running
Check our friendly quickstart guide to make sure your computer meets the minimum system requirements to run RPCS3.
Don't forget to have your graphics driver up to date and to install the Visual C++ Redistributable Packages for Visual Studio 2022 if you are a Windows user.
License
Most files are licensed under the terms of GNU GPL-2.0-only License; see LICENSE file for details. Some files may be licensed differently; check appropriate file headers for details.