protonscr

Game crash after 20 seconds

protonclosed appid 4126040
ValveSoftware/Proton#10150 · opened 2026-09-16 by cyber-insomniac · updated 2026-09-18 · 2 comments · github · game page · search this game
Ccyber-insomniac 2026-09-16 github

Compatibility Report

  • Name of the game with compatibility issues: Aniimo
  • Steam AppID of the game: 4126040

System Information

  • GPU: Radeon RX 9070 XT (RADV)
  • Kernel version: 7.2.4-3-cachyos / 7.2.5-cachyos (reproduced across kernel updates)
  • Proton versions tested: Proton 10.0-4b, Proton Experimental (official, build experimental-bleeding-edge-11.0-434871-20260916), and Proton-CachyOS-SLR (cachyos-11.0-20260703-slr) — identical crash on all three

I confirm

  • [x] that I haven't found an existing compatibility report for this specific crash (there is an existing unofficial report, #9427, but it covers an unrelated symptom — mouse input not registering)
  • [x] that I have checked whether there are updates for my system available

Symptoms

Game launches, gets to the Steam login step, then reliably crashes ~20 seconds in, every launch, on every Proton build tested.

Crash details

Exception 0xc0000005 (EXCEPTION_ACCESS_VIOLATION)
Access: Read
Address: 0x0000000000000060

Backtrace (from Proton Experimental official build, offsets from matching cachyos build in parentheses where they differ):

0 rsaenh.dll   +0x26432  (also seen at +0x32332 on a different Wine build)
1 rsaenh.dll   +0x5403   (also +0x6d2f)
2 advapi32.dll +0x10fa7  (also +0x13307)
3 FPXSteam.dll +0x4be69
4 FPXSteam.dll +0x1261d
5 FPXSteam.dll +0xe3aa
6 FPXSteam.dll +0x2b56e
7 FPXSteam.dll +0xc62de
8 kernel32.dll +0x11649
9 ntdll.dll    +0x10e0f

Faulting instruction at the crash site: callq *0x60(%rax) — an indirect call through what appears to be a null or uninitialized function pointer at offset 0x60 of some internal structure.

Analysis

FPXSteam.dll (the game's Steam-auth integration library) computes an HMAC using the legacy CryptoAPI (CryptCreateHash with CALG_HMAC, then CryptSetHashParam(HP_HMAC_INFO, ...) with HashAlgid = CALG_SHA_256). The crash happens inside rsaenh.dll's HMAC hash-init/update path.

I initially suspected this was the known issue where RSAENH_CPSetHashParam's CALG_HMAC case fails to find SHA-256 in a CSP's algorithm table and mis-reports success — but checking current Wine master (dlls/rsaenh/rsaenh.c), that specific path already guards against it:

pAlgInfo = get_algid_info(pCryptHash->hProv, pCryptHash->pHMACInfo->HashAlgid);
if (!pAlgInfo)
{
    FIXME("Hash algroithm %#x not found.\n", pCryptHash->pHMACInfo->HashAlgid);
    return FALSE;
}

Since the crash backtrace is past this point (inside the actual hash init/update calls that only run after pAlgInfo is found), the algorithm lookup is succeeding, and the null-pointer deref is happening somewhere inside the hash context setup/update itself — a distinct, apparently still-open bug.

I also tested a registry-based workaround (adding a duplicate PROV_RSA_FULL-type provider entry aliased to the AES-capable personality, to rule out CSP-selection as the cause). The crash was byte-for-byte identical with and without that change, which further supports this being a bug inside rsaenh.dll's HMAC code path itself rather than a CSP/personality selection issue.

Reproduction

  1. Launch Aniimo through Steam (any recent Proton build).
  2. Log in through the in-game Steam auth step.
  3. Crash occurs ~20 seconds after launch, always at the same location.

Attachments

  • crashinfo.txt from <library>/steamapps/compatdata/4126040/pfx/drive_c/users/steamuser/AppData/Local/Temp/Aniimo/Aniimo/Crashes/
  • Full PROTON_LOG=1 Wine debug log (steam-4126040.log)

Happy to provide additional logs or test patches if anyone wants to dig further — this looks like a genuine crypto-provider bug in rsaenh.dll, not a GPU/driver/anticheat issue.

steam-4126040.log

crashinfo.txt

Kkisak-valve maintainer 2026-09-16 github

Hello @cyber-insomniac, we're using one issue report per unofficially supported game title, so I've gone ahead and transferred this issue report to https://github.com/ValveSoftware/Proton/issues/9427#issuecomment-5701985428.

Ggustavo-karsten 2026-09-18 github

Root cause found; bug filed upstream: https://bugs.winehq.org/show_bug.cgi?id=60345

The crash is not in CryptDeriveKey. FPXSteam.dll calls CryptSetHashParam(HP_HMAC_INFO) with CALG_SHA_256 on a PROV_RSA_FULL container. Windows accepts that, but Wine's init_hash() fails because SHA-256 isn't in the RSA full provider's algorithm table, CPSetHashParam() ignores the failure and returns TRUE, and the next CryptHashData() dereferences the NULL hash descriptor (callq *0x60(%rax), rsaenh+0x24b2e).

Minimal reproducer (crashes in current Wine, works on Windows): CryptAcquireContext(PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) → CryptCreateHash(CALG_HMAC, key) → CryptSetHashParam(HP_HMAC_INFO, {CALG_SHA_256}) → CryptHashData().

Reference fix + RFC 4231 test vectors (written with AI assistance, so not submitted to WineHQ per their LLM policy): https://github.com/gustavo-karsten/wine/commit/2f41bdbf8dd3dd0fc0ffad7fb48d3a9e14dbefd0. With it Aniimo gets past server selection; verified on CrossOver 26.2 (Wine 11.0 base) on macOS. Should apply to Proton's wine tree as well.

Related threads

Proton versions

Launch options

Upstream links

DLLs

Error codes