I finally got to the bottom of my MW5 Unreal Engine4 fatal crashes using my son's gaming rig and wanted to post this for anyone banging their head against a wall.
The punch line is Windows Timeout Detection and Recovery (TDR) not waiting long enough (2 sec) for GPU render transitions, restarting the GPU driver (nVidia GTX in my case), causing UE4 to fatally crash due to the GPU going away (from a DirectX perspective). Increasing the TDR waits to 60 seconds has *permanently* fixed my UE4 fatal crashes with zero negative effects.
Windows 7 (then Windows 8.1)
Dell Precision 690
Dual Intel Xeon x5355 (quad core 2.66GHz)
nVidia GTX 1050Ti
48GB RAM (DDR2 ECC @ 667MHz)
300MB/sec SSD
The final clue was occasionally getting "Display driver stopped responding and has recovered" Windows 7 taskbar error messages when NOT running games, just heavy Chrome usage (dozens of active tabs in several Chrome instances).
Just like the original poster above, I tried the latest nVidia driver and rolled back to the prior dozen driver versions and *still* got the "stopped responding" errors. The gaming rig hardware hadn't changed in years.
I stumbled upon a document posted by a 3D rendering company on exactly this problem.
Their doc also notes the Microsoft document:
https://docs.substan...-128745489.html
To avoid link-rot, I'm going to paraphrase the article:
Why does the GPU driver crash ?
In order to prevent any rendering or GPU computation from locking the system, the Windows Operating System kills the GPU driver whenever a rendering takes more than a few seconds. When the driver is killed, the application using it crashes automatically. Since we can't possibly know how long a rendering or computation will take (it depends on the GPU, the drivers, the OS, the mesh size, the texture size, etc.), we cannot put a limit on how much the computer can process and avoid the crash.
On Windows there is a key in the registry specifying how many seconds the OS should wait before killing the driver call. Application are not authorized to modify this setting directly, this procedure has to be done manually (see below).
You can find more details about it here :
https://docs.microso...r-registry-keys
Create two 32bit DWORD registry keys (TdrDelay, TdrDdiDelay) to increase the TDR waits:
***WARNING: OS and video driver updates can change these registry values.***
regedit
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
New > DWORD (32bit) Value. Name it "TdrDelay"
In the right pane, double click the value TdrDelay. Change the Base setting to Decimal and set higher than the default 2 (we recommend 60).
New > DWORD (32bit) Value. name it "TdrDdiDelay"
In the right pane, double click the value TdrDdiDelay. Change the Base setting to Decimal and set the value higher than the default 5 (we recommend 60).
How to revert the TDR to its default values ?
There are two ways to revert the TDR to its default values :
Set the TdrDelay to 2 and the TdrDdiDelay to 5, by following the steps described above.
Or
Remove the TdrDelay and TdrDdiDelay keys from the registry.