TL;DR:
Turn OFF any kind of dynamic overclocking.
Examples include:
Asus Motherboard AI Optimized OC
Gigabyte Motherboard OC Guru
MSI Motherboard OC Genie
MSI GPU Afterburner Software
You may be able to turn on a static XMP RAM Profile, because it’s STATIC.
Anything that is DYNAMICALLY changing CPU or RAM will crash Diablo 4.
Longer explanation:
I only know a scant amount of what I’m about to explain here. It will be vague, it will be a little speculatory and it might be that all of this doesn’t work for you. Try not to berate me for being inaccurate in places of this post, I’m just trying to help.
That said, as of this writing, I can reproduce a Fenris crash on demand by simply turning on my motherboard’s dynamic over clocking feature. When it’s turned off, the game never crashes, never experiences any disconnects and runs as smooth as glass. Why that didn’t affect the game before patch 1.1.1, I do not know.
How I figured it out:
Fenris crashes create memory dump files in addition to the FenrisDebug text files. Those memory dump files are in the same format of a Windows memory dump file and are readable by WinDbg. I read several dump files using WinDbg then had it analyze the dump and give me some discernable information about them. The one thing they all had in common, was a memory address access violation. They all also appeared to be encountering that access violation when trying to access a memory address that the game had previously written data to, or had defined with a specific data type. Like any application, Diablo 4 writes a value into a variable in memory, runs some kind of routine or array that changed it and the tried to access that memory address for the end result of the routine or array, but then received an access violation when trying to read the data. The mystifying part of that to me however, was the access violation was from Diablo 4 itself, not Windows. The memory addresses were different in every dump file I analyzed but the access violation was the same.
Diablo 4 uses a proprietary game engine. It’s Blizzard’s design and implementation as far as we know. They used a similar version for Diablo 3. It’s their code, not an out of the box engine like Unreal, Havok, or the many other engines that are used to make games. Whereas those game engines may not care that memory and CPU speeds are dynamically changing based upon the load being placed upon the system, what I believe is that Diablo 4’s engine does care or isn’t setup to deal with it. I’ll also guess that this may be on purpose as a result of so many “trainer” type of cheat programs that have been used over the years to read Diablo’s running memory and manipulate it, but I digress. Elden Ring is a somewhat recent game that also uses their own, proprietary engine and it ran perfectly with dynamic over clocking. Diablo 4 does not.
Therefore what I believe the issue boils down to is Diablo 4’s code (I believe C or C+ language) being VERY specific about data to written and read in memory. If your PC is using a dynamic over-clocking method for your system or graphics card memory, the data written to a memory address and then read from that same memory address is being considered as different by Diablo 4. Or Diablo 4 recognizes the conditions that the memory address was written to as different from the conditions that memory address is read from, or the dynamic over clocking is putting that value somewhere Diablo 4 didn’t intend it to go and thus it’s different memory in any case and the access violation occurs, crashing the game.
I started troubleshooting this using these steps:
- Turn off all over clocking of everything.
- Disable any XMP profile in the BIOS.
- Uninstall graphics driver and all associated components.
- Reboot whether you need to or not and reinstall graphics driver.
- Play Diablo 4.
- Does it work? If so, then enable your static XMP profile for your RAM (and make sure it’s not being set to run faster than your CPU supports, of course).
- Try again. Does it still work? Then one by one, you can try and enable over clocking of your CPU or GPU, but this is where you will likely encounter crashing.
As previously stated this may not work for everyone, but I hope it works for you, Wanderer. Happy gaming.