- Source: Timeout Detection and Recovery
Timeout Detection and Recovery or TDR is a feature of the Windows operating system (OS) introduced in Windows Vista. It detects response problems from a graphics card (GPU), and if a timeout occurs, the OS will attempt a card reset to recover a functional and responsive desktop environment. However, if the attempt was unsuccessful, it results in the Blue Screen of Death (BSOD). The recovery tries to mitigate the scenario where an end user superfluously reboots their device should it become unresponsive.
Timeline
When the GPU takes more than the allotted time to process a request, the system's GPU scheduler will pick up the anomaly. It then tries to preempt the particular task, this operation has the TDR timeout which is 2 seconds by default.
Once the timeout is up and the task is not completed or preempted, the kernel determines that the GPU is frozen and proceeds to inform the respective driver about the detected timeout. It is then the driver's responsibility to properly reset and reinitialize the underlying GPU.
The OS will then do a bunch of other recovery steps needed for the system to regain responsiveness. If the entire operation was successful, the end user might see some visual artefacts and a message will be shown on the screen describing what had happened ("Display driver stopped responding and has recovered."), else a BSOD might ensue.
Possible causes
There are multiple probable causes should a recovery fail, causing an inevitable BSOD:
Outdated drivers
GPU/Hardware issue
Overloading the GPU
Corrupted application/system files/driver
BSOD stop codes
Possible BSOD stop codes emitted if the attempted recovery failed:
VIDEO_TDR_FAILURE (Bug check value: 0x116), recovery and resetting of display driver from a TDR timeout failed.
See also
Windows Display Driver Model
Display driver
DirectX
Vulkan
References
Further reading
Timeout Detection & Recovery (TDR) Nvidia
TDR in Windows 8 and later - Windows drivers | Microsoft Learn
Thread Synchronization and TDR - Windows drivers | Microsoft Learn