Bug: Stable 535 driver causes ACCESS_VIOLATION inside _nvngx.dll in Diablo IV

After I upgraded from 525 Vulkan Dev driver to the latest 535.54.03 stable release, I started encountering consistent crashes shortly after starting Diablo IV. Logs generated by the game itself suggest that the issue lies in _nvngx.dll, one of two libraries that are meant to be installed inside Wine prefixes to enable DLSS in games running via Wine:

UNHANDLED EXCEPTION: ACCESS_VIOLATION (c0000005) at:
DBG-OPTIONS<NoAddress NoFuncOffset NoImage>
DBG-ADDR<000000001D9B60A6>("_nvngx.dll")
DBG-OPTIONS<>

Setting WINEDLLOVERRIDES environment variable to _nvngx= prevents Wine from loading this library and the game from crashing like this, although then DLSS cannot be enabled in-game:

Failed to initialize NGX, any SL feature requiring NGX will be unloaded and disabled
Missing NGX context - DLSSContext cannot run

This issue seems to be fairly specific to this game, some other games that make use of DLSS still work fine on 535 drivers (I’ve checked Cyberpunk 2077 and Monster Hunter Rise).

I hope this can be easily reproduced for debugging, all that should be needed is a Wine prefix setup that has Diablo IV with DLSS working on 525 drivers and then upgrading the driver to 535.54.03, but for the record my setup is:

  • Arch Linux, KDE Plasma, Wayland session
  • Intel Raptop Lake iGPU and GeForce RTX 4080 Mobile in PRIME render offload configuration (laptop)
  • wine-tkg-staging-protonified-8.7 (but it’s very likely that Proton Experimental can also be used if one installs Battle.net as a non-Steam game)
  • pretty much the latest git versions of dxvk, dxvk-nvapi and vkd3d-proton
1 Like

Some further info:

  • Issue persists on 535.86.05 driver
  • Remnant II is also affected, although in that title the crash may not be instantenous and could happen about a minute after launching the game, with sample call stack as seen by UE5 looking like so: <PCallStack>_nvngx 0x0000000027f70000 + 661a6 _nvngx 0x0000000027f70000 + 66f01 _nvngx 0x0000000027f70000 + 55aaf _nvngx 0x0000000027f70000 + 56b93 kernel32 0x000000007b600000 + 1469d</PCallStack>
  • Finally and most interestingly, the issue disappears when I unset PROTON_ENABLE_NGX_UPDATER which I have previously set to 1 for testing purposes and I completely forgot about it 😅