protonscr

Forza Horizon 6: deterministic crash via RtlReleaseSRWLockExclusive, reproducible across GPU/runner/sync backend

vkd3dclosed
HansKristian-Work/vkd3d-proton#3216 · opened 2026-08-16 by sampk1203 · updated 2026-08-28 · 2 comments · github
Ssampk1203 2026-08-16 github

Software information

Forza Horizon 6 (Steam release, forzahorizon6.exe)
VKD3D_CONFIG=enable_experimental_features,descriptor_heap and PROTON_VKD3D_HEAP=1 set (per a workaround reported by another user for this same title) — no effect on the crash. Ray tracing/DLSS not yet reached (crash happens before game window opens).

System information

  • GPU: NVIDIA GeForce RTX 3050 Laptop GPU (hybrid/PRIME laptop, also has AMD Radeon integrated GPU)
  • Driver: NVIDIA 580.173.02 (Vulkan apiVersion 1.4.312). Also tested on AMD iGPU path, driver reports Vulkan apiVersion 1.4.311 — identical crash on both GPUs.
  • Wine version: tested across Bottles soda-11.0-5, GE-Proton 11.5, and proton-cachyos-11.0.10160703-slr-x86_64_v3 — identical crash on all three
  • VKD3D-Proton version: tested 3.0.1-2 and 3.1.0 (build c15008837a57884) — identical crash on both
  • DXVK version: tested v2.7.1 and v3.0.2 — identical crash on both
  • Sync backend: tested fsync, ntsync (falls back to fsync, ntsync kernel module not loaded), and plain wineserver server-side sync (no esync/fsync) — identical crash on all three
  • Distro: Pop!_OS (Ubuntu-based), kernel 7.0.11-76070011-generic

Description

Process crashes deterministically at the same point every launch, before any window opens: immediately after VKD3D finishes pipeline library disk cache setup, Wine's ntdll throws:

err:sync:RtlReleaseSRWLockExclusive Lock 0000000011F0EEE0 is not owned exclusive!

Process exits shortly after with no further output. Fully reproducible — cleared shader cache before every test (log confirms "No write cache exists" each run, ruling out stale-cache corruption), and swapped every variable listed above one at a time with no change to outcome.

A separate earlier run (soda-11.0-5, no VKD3D_CONFIG set, AMD device) got slightly further and produced a full unhandled exception trace instead, possibly the same underlying bug manifesting differently depending on timing:

wine: Unhandled page fault on read access to 0000000000000000 at address 0000000144918CF2 (thread 00f4)
Backtrace:
=>0 0x00000144918cf2 in forzahorizon6 (+0x4918cf2)
  1 0x00000140382c40 in forzahorizon6 (+0x382c40)
  2 0x006fffff9fb98a in ucrtbase (+0x2b98a)
  3 0x000001459dfae8 in forzahorizon6 (+0x59dfae8)
  4 0x006fffffec1649 in kernel32 (+0x11649)
  5 0x006ffffff40e0f in ntdll (+0x10e0f)
0x00000144918cf2 forzahorizon6+0x4918cf2: movq (%rcx), %rax

At time of that fault, steam_api64, playfabservices, playfabmultiplayerwin, playfabgamesave, libhttpclient, playfabcore, and gamingtcui were all loaded as recently-initialized modules.

Not certain if these are one bug or two — including both for completeness. Happy to run debug builds or provide +relay/+seh,+module logs if useful.

Log files

fh6_github_issue.log

HHansKristian-Work maintainer 2026-08-28 github

Why is this reported here? There's zero evidence of this being vkd3d-proton's fault.

Ssampk1203 2026-08-28 github

Thank you for your response. The one real crash backtrace I do have (unhandled page fault) came from a separate run and pointed to a location inside forzahorizon6.exe itself — not vkd3d-proton. I'll look into this further before raising it elsewhere. Apologies for the noise here.

Proton versions

Launch options