DXGI debugging: Microsoft put me on a list
Why does Space Station 14 crash with ANGLE on ARM64? 6 hours later…
So. I’ve been continuing work on getting ARM64 builds out for Space Station 14. The thing I was working on yesterday were launcher builds, specifically a single download that supports both ARM64 and x64. I’d already gotten the game client itself running natively on ARM64, and it worked perfectly fine in my dev environment. I wrote all the new launcher code, am pretty sure I got it right. Zip it up, test it on ARM64, aaand…
The game client crashes on Windows ARM64. Both in my VM and on Julian’s real Snapdragon X laptop.
The client logs are empty. They suspiciously cut out right after SDL is initialized.
Of course it isn’t that easy.
Given that there’s no logs, this has to be a native crash. That means it’s WinDbg time.
So at first I decided to start Space Station 14 Launcher.exe directly through WinDbg. This is annoying because I have to go into child processes (with .childdbg 1 ) twice, and for some reason there’s a lot of waiting, but it does work…
The game crashes in USER32!GetDC on an illegal instruction, somewhere after SDL does something. I barely glanced at the disassembly but it made no sense to me, so I just assumed there’s some UB happening and didn’t think much of it. After all, why would the implementation of GetDC() have broken assembly?
(3148.35e4): Illegal instruction - code c000001d (first chance) (3148.35e4): Unknown exception - code c000041d (!!! second chance !!!) *** WARNING: Unable to verify checksum for C:\Users\Luna\Downloads\SS14.Launcher_Windows\bin_arm64\loader\SDL3.DLL USER32!GetDC+0x8: 00007ff9`f7be9548 ee8e1db0 ???
... continue reading