protonscr

World of Warcraft Classic Beta / WoW Forever (non-Steam, Battle.net) — native ARM64 client fails to start on Proton ARM64

protonclosed
ValveSoftware/Proton#10173 · opened 2026-09-24 by aanze · updated 2026-09-24 · 1 comments · github
Aaanze 2026-09-24 github

Compatibility Report

  • Name of the game with compatibility issues: World of Warcraft (Classic Beta / "WoW Forever" beta client, build 1.60.1.69977) — launched via Battle.net
  • Steam AppID of the game: N/A — non-Steam shortcut (Battle.net Launcher). Blizzard product uid: wow_classic_beta

System Information

  • Device: AYN Odin 3 (ARM64 handheld)
  • OS: Armada 20260924.207c812 (Fedora 44 based, aarch64)
  • GPU: Adreno 830
  • Video driver version: Mesa 26.2.3 (Turnip), Vulkan 1.4.354
  • Kernel version: 7.2.6
  • Proton version: Proton Experimental (ARM64) — experimental-11.0-20260917b-arm64 (also tested: Proton 11.0-2 (ARM64), Proton Experimental x86_64 via FEX)

I confirm:

  • [x] that I haven't found an existing compatibility report for this game.
  • [x] that I have checked whether there are updates for my system available.

Symptoms

Battle.net itself works well on ARM64 (login, install, patching). When the game is launched from an ARM64 Proton build, Battle.net detects an arm64 OS and installs/launches Blizzard's native ARM64 client (WowB-arm64.exe, PE machine 0xAA64; install tagged Windows arm64). The game fails at startup with "Game initialization failed".

Results per Proton build:

Proton build Client launched Result
Proton Experimental x86_64 (via FEX) WowB.exe (x64) Immediate crash, BREAKPOINT inside WowB_loader.dll (3 frames, main thread, before any game code runs)
Proton 11.0-2 (ARM64) WowB-arm64.exe gx.log: LoadLibrary(dxgi.dll) Failed (HR:0x000000C1) Bad EXE format → "No suitable gpu found"
Proton Experimental (ARM64) WowB-arm64.exe "Game initialization failed" dialog, ~100 ms after process start, before any graphics init

Finding 1 — Proton 11.0-2 (ARM64) cannot run pure-ARM64 D3D12 apps.
In Proton 11.0-2 (ARM64) and in proton-cachyos-11.0-arm64, lib/wine/dxvk/aarch64-windows/dxgi.dll and lib/wine/vkd3d-proton/aarch64-windows/d3d12.dll are ARM64EC (PE machine 0x8664). A pure ARM64 process cannot load them, so the game fails with ERROR_BAD_EXE_FORMAT. Proton Experimental (ARM64) ships pure ARM64 (0xAA64) versions of those DLLs, and with it dxgi/d3d12 load correctly. Suggest shipping pure ARM64 (or ARM64X) DXVK/vkd3d-proton in the stable ARM64 branch as well.

Finding 2 — with Proton Experimental (ARM64), the game exits during a TLS callback.
From the PROTON_LOG=1 log (attached), for the WowB-arm64.exe process:

1842.278 loaddll: Loaded WowB-arm64.exe at 0000000140000000: native
         (then ntdll, kernelbase, kernel32, ucrtbase, sechost, msvcrt, advapi32, win32u, gdi32, user32, imm32)
1842.371 seh: code=c000001d (EXCEPTION_ILLEGAL_INSTRUCTION) addr=000000014000D3C4
         -> vectored handler in WowB-arm64.exe (+0x2CCB8) returned ffffffff (continue execution)
1842.371 seh: code=c000001d (EXCEPTION_ILLEGAL_INSTRUCTION) addr=000000014000D844
         -> same handler, returned ffffffff
1842.372 seh: code=c0000005 (EXCEPTION_ACCESS_VIOLATION) addr=0000000140005060, read of 0x000000000000000D
         -> handler returned 0; backtrace: WowB-arm64.exe +0x5060 <- +0xD2E4 <- +0x1015C <- +0xB048 <- ntdll+0x44294
         -> caught by ntdll __except, execution continues
1842.373+ winex11.drv, uxtheme, rpcrt4, combase, ole32, oleaut32, comctl32, msimg32 load
         -> "Game initialization failed" dialog is shown
  • The executable's first TLS callback is at RVA 0x4028, and the failure happens there, before the entry point (RVA 0xB1868). This appears to be the game's own startup/anti-tamper code (the x64 client's equivalent is WowB_loader.dll).
  • No fixme: or err: lines are logged for this process, so no unimplemented API is reported.
  • The game writes no logs of its own (Logs/ untouched), because the failure happens before its logging starts.
  • CPU info the client reports (from an earlier run's gx.log): Windows 10 (10.0.19045.5796) [Wine (11.0.0) Linux 7.2.6] arm64, Vendor:? | Microcode:0x0, features neon armv8 aes pmull sha1 sha256 crc32 atomicsv81 dotprod8 jscvt.

Since Blizzard ships and auto-selects a native ARM64 Windows client, this looks like the first case of a real-world pure-ARM64 Windows game in Proton's ARM64 builds. It may be useful to Valve/CodeWeavers, or as a contact point with Blizzard.

Reproduction

  1. On an ARM64 Linux device running Steam ARM64 (tested on Armada, Adreno 830 / Turnip), add Battle.net-Setup.exe as a non-Steam game, force Proton Experimental (ARM64), install Battle.net, then point the shortcut to Battle.net Launcher.exe.
  2. Log in and install World of Warcraft — Classic Beta / WoW Forever (wow_classic_beta). Battle.net installs the Windows arm64 build (WowB-arm64.exe + D3D12_ARM64/).
  3. Click Play → "Game initialization failed".
  4. (Optional) Switch to Proton 11.0-2 (ARM64) → dxgi.dll load fails with 0xC1 (_classic_beta_/Logs/gx.log).

Notes:

  • The distro sets WINEDLLOVERRIDES=dxgi=n by default, and launch options go through the distro wrapper (/usr/libexec/armada/armada-game-launch %command%). The Steam overlay fails to preload (unrelated).
  • Switching Proton builds changes the device fingerprint seen by Battle.net, which triggers a one-time account security checkpoint. This is unrelated to the failure.
Kkisak-valve maintainer 2026-09-24 github

Hello @aanze, 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/10157#issuecomment-5816357391.

Related threads

Proton versions

Launch options

Upstream links

DLLs