Skip to content

All RE Engine games with REFramework crash on ARM64 Proton, dinput GetDeviceState needs hybrid_patchable #10167

Open

Description

@cerroverb

I'm not a developer. This was diagnosed by FEX developers in FEX-Emu/FEX#5833 and they said the fix belongs in Proton.

Proton version: Proton 11.0 (ARM64) build proton-11.0-2-rc7, and Proton Experimental (ARM64). Same crash on both.
Hardware: AYN Odin 3 Ultra, Qualcomm Dragonwing Q8, Adreno 830, aarch64
Kernel: 7.2.0-rc7

Any RE Engine game using REFramework (Resident Evil 2/3/4/7/Village, Devil May Cry 5, Monster Hunter Rise, Street Fighter 6, Dragon's Dogma 2, Monster Hunter Wilds, and others). REFramework uses the same hook code for every game it supports. Tested on Monster Hunter Rise (1446780).

The issue is that when REFramework (dinput8.dll only) is installed, the game crashes with STATUS_ILLEGAL_INSTRUCTION shortly after REFramework initializes. The game runs fine without the mod. The cause, per the FEX developers REFramework installs an x86-64 inline hook on IDirectInputDevice::GetDeviceState. Under ARM64EC that function is ARM64 code, so the hook breaks. Functions that x86-64 code hooks need to be marked hybrid_patchable so an x86-64 stub exists.

Needed change

In Wine, dlls/dinput/device.c, dinput_device_GetDeviceState is not marked DECLSPEC_CHPE_PATCHABLE. dinput8.dll is built from these same sources. DXVK already fixed its side (dxgi swapchain methods): doitsujin/dxvk#5851. That fix is in Proton Experimental's DXVK but not in Proton 11.0-2's.

Logs

REFramework log, crash dump, and PROTON_LOG output: https://github.com/user-attachments/files/31268572/mhrise.tar.gz

mhrise.tar.gz

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions