Life is Strange: Double Exposure

Unreal Engine 5 titles that crash on the first cutscene. The carrier sits under a compiler-named subfolder, which the script discovers rather than assumes.

GPL-3.0-or-laterThis fix in MacGameFix

What you see

Runs fine, then freezes after a while, anywhere in the game

Why it happens

IDXGIAdapter3::QueryVideoMemoryInfo succeeds for node indices the adapter does not have

What the fix changes

Refuse them — the same DLL Reunion uses

The code

One GPU is one node: any other node index is refused with DXGI_ERROR_INVALID_CALL, which is what Windows returns and what ends the caller's walk.

fixes/ue5-media-fix.c · guarded_query_vram, lines 2297–2315
c
static HRESULT WINAPI guarded_query_vram(void *self, UINT node,
                                         DXGI_MEMORY_SEGMENT_GROUP group,
                                         DXGI_QUERY_VIDEO_MEMORY_INFO *info)
{
    /* One GPU means one node, so zero is the only valid index, and
     * DXGI_ERROR_INVALID_CALL is what Windows returns past the end. */
    {
        static LONG asked;
        if (InterlockedIncrement(&asked) == 1)
            logf_("node guard: the adapter was asked for video memory (node %u) -- the walk reached us", node);
    }
    if (node != 0)
    {
        if (InterlockedIncrement(&refusals) == 1)
            logf_("node %u does not exist -- refused, which ends the caller's walk", node);
        return DXGI_ERROR_INVALID_CALL;
    }
    return real_query_vram(self, node, group, info);
}

Details

Installer
install-runtime-fix.sh
Executable
Chronos-Win64-Shipping.exe
Built from
ue5-media-fix.c
Verified on
Stable 26.3. Freezes on the D3DMetal 3.0 that build ships, with or without the fix; this title needs Game Porting Toolkit 4.0b2 — see below

The full story, with the measurements and the wrong turns