Проверка ошибок 0x116: VIDEO_TDR_FAILURE
Проверка ошибок VIDEO_TDR_FAILURE имеет значение 0x00000116. Эта ошибка указывает, что попытка сбросить драйвер отображения и восстановиться после истечения времени ожидания завершилась ошибкой.
Внимание
Эта статья предназначена для программистов. Если вы являетесь клиентом, который получил код ошибки синего экрана при использовании компьютера, см. статью "Устранение ошибок синего экрана".
параметры VIDEO_TDR_FAILURE
Параметр | Описание |
---|---|
1 | Указатель на внутренний контекст восстановления TDR, если он доступен. |
2 | Указатель на модуль драйвера ответственного устройства (например, тег владельца). |
3 | Код ошибки последней неудачной операции, если он доступен. |
4 | Внутренние зависимые от контекста данные, если они доступны. |
Причина
Распространенная проблема стабильности в графике возникает, когда система отображается полностью замороженной или зависает при обработке команды или операции конечного пользователя. Обычно GPU занят обработкой интенсивных графических операций, как правило, во время игрового процесса. Обновление экрана не происходит, и пользователи предполагают, что их система заморожена. Обычно пользователи ожидают несколько секунд, а затем перезагружают систему, нажав кнопку питания. Windows пытается обнаружить эти проблемные ситуации зависания и динамически восстановить адаптивный рабочий стол.
Этот процесс обнаружения и восстановления называется обнаружением времени ожидания и восстановлением (TDR). Время ожидания по умолчанию — 2 секунды. В процессе TDR для видеокарточек планировщик GPU операционной системы вызывает функцию DxgkDdiResetFromTimeout драйвера для отображения минипорта, чтобы повторно инициализировать драйвер и сбросить GPU.
В ходе этого процесса операционная система сообщает драйверу, что он не обращается к оборудованию или памяти и дает ему короткое время для выполнения потоков. Если потоки не выполняются в течение времени ожидания, системная ошибка проверяет 0x116 VIDEO_TDR_FAILURE. Дополнительные сведения см. в разделе "Синхронизация потоков" и "TDR".
Система также может проверить ошибку с VIDEO_TDR_FAILURE, если несколько событий TDR происходят в течение короткого периода времени. Сумма по умолчанию составляет более пяти TDR за одну минуту.
Если процесс восстановления выполнен успешно, отобразится сообщение, указывающее, что драйвер отображения перестал отвечать и восстановился.
Дополнительные сведения см. в разделе "Обнаружение и восстановление времени ожидания" (TDR), разделы реестра TDR и изменения TDR в Windows 8 и более поздних версиях.
Разрешение
Gpu занимает больше времени, чем разрешено отображать графику на мониторе. Эта реакция на событие может возникать по одной или нескольким из следующих причин.
- Возможно, потребуется установить последние обновления для драйвера дисплея, поэтому он правильно поддерживает процесс TDR.
- Аппаратные проблемы, влияющие на способность видеоадаптер правильно работать, в том числе:
- Более часовые компоненты, такие как материнской платы
- Неправильное совместимость компонентов и параметры (особенно конфигурация памяти и время)
- Недостаточно системного охлаждения
- Недостаточно системной мощности
- Дефектные части (модули памяти, материнской платы и т. д.)
- Визуальные эффекты или слишком много программ, работающих в фоновом режиме, могут замедлить работу компьютера, поэтому видеокарта не может реагировать по мере необходимости.
Расширение отладки !analyze отображает сведения о проверке ошибок и может оказаться полезным при определении первопричины.
1: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
VIDEO_TDR_FAILURE (116)
Attempt to reset the display driver and recover from timeout failed.
Arguments:
Arg1: ffffe000c2c404c0, Optional pointer to internal TDR recovery context (TDR_RECOVERY_CONTEXT).
Arg2: fffff8016470c14c, The pointer into responsible device driver module (e.g. owner tag).
Arg3: ffffffffc000009a, Optional error code (NTSTATUS) of the last failed operation.
Arg4: 0000000000000004, Optional internal context dependent data.
...
Также отображается имя модуля сбоя.
MODULE_NAME: nvlddmkm
IMAGE_NAME: nvlddmkm.sys
Для отображения сведений о драйвере сбоя можно использовать команду lm (список загруженных модулей), включая метку времени.
1: kd> lmvm nvlddmkm
Browse full module list
start end module name
fffff801`63ec0000 fffff801`649a7000 nvlddmkm T (no symbols)
Loaded symbol image file: nvlddmkm.sys
Image path: \SystemRoot\system32\DRIVERS\nvlddmkm.sys
Image name: nvlddmkm.sys
Browse all global symbols functions data
Timestamp: Wed Jul 8 15:43:44 2015 (559DA7A0)
CheckSum: 00AA7491
ImageSize: 00AE7000
Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
Параметр 1 содержит указатель на TDR_RECOVERY_CONTEXT. Как показано в выходных данных !analyze, если у вас есть символы связанного кода, можно использовать dt
команду для отображения этих данных.
1: kd> dt dxgkrnl!_TDR_RECOVERY_CONTEXT ffffe000c2c404c0
+0x000 Signature : 0x52445476
+0x008 pState : 0xffffe000`c2b12a40 ??
+0x010 TimeoutReason : 9 ( TdrEngineTimeoutPromotedToAdapterReset )
+0x018 Tick : _ULARGE_INTEGER 0xb2
+0x020 pAdapter : 0xffffe000`c2a89010 DXGADAPTER
+0x028 pVidSchContext : (null)
+0x030 GPUTimeoutData : _TDR_RECOVERY_GPU_DATA
+0x048 CrtcTimeoutData : _TDR_RECOVERY_CONTEXT::<unnamed-type-CrtcTimeoutData>
+0x050 pProcessName : (null)
+0x058 DbgOwnerTag : 0xfffff801`6470c14c
+0x060 PrivateDbgInfo : _TDR_DEBUG_REPORT_PRIVATE_INFO
+0xb00 pDbgReport : 0xffffe000`c2c3f750 _WD_DEBUG_REPORT
+0xb08 pDbgBuffer : 0xffffc000`bd000000 Void
+0xb10 DbgBufferSize : 0x37515
+0xb18 pDumpBufferHelper : (null)
+0xb20 pDbgInfoExtension : 0xffffc000`ba7e47a0 _DXGKARG_COLLECTDBGINFO_EXT
+0xb28 pDbgBufferUpdatePrivateInfo : 0xffffc000`bd000140 Void
+0xb30 ReferenceCount : 0n1
+0xb38 pResetCompletedEvent : (null)
Параметр 2 содержит указатель на модуль драйвера ответственного устройства (например, тег владельца).
1: kd> ub fffff8016470c14c
nvlddmkm+0x84c132:
fffff801`6470c132 cc int 3
fffff801`6470c133 cc int 3
fffff801`6470c134 48ff254d2deaff jmp qword ptr [nvlddmkm+0x6eee88 (fffff801`645aee88)]
fffff801`6470c13b cc int 3
fffff801`6470c13c 48ff252d2eeaff jmp qword ptr [nvlddmkm+0x6eef70 (fffff801`645aef70)]
fffff801`6470c143 cc int 3
fffff801`6470c144 48ff257d2deaff jmp qword ptr [nvlddmkm+0x6eeec8 (fffff801`645aeec8)]
fffff801`6470c14b cc int 3
Вы можете проверить трассировку стека с помощью команды k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace).
1: kd> k
# Child-SP RetAddr Call Site
00 ffffd001`7d53d918 fffff801`61ba2b4c nt!KeBugCheckEx [d:\th\minkernel\ntos\ke\amd64\procstat.asm @ 122]
01 ffffd001`7d53d920 fffff801`61b8da0e dxgkrnl!TdrBugcheckOnTimeout+0xec [d:\th\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2731]
02 ffffd001`7d53d960 fffff801`61b8dd7f dxgkrnl!ADAPTER_RENDER::Reset+0x15e [d:\th\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 19443]
03 ffffd001`7d53d990 fffff801`61ba2385 dxgkrnl!DXGADAPTER::Reset+0x177 [d:\th\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 19316]
04 ffffd001`7d53d9e0 fffff801`63c5fba7 dxgkrnl!TdrResetFromTimeout+0x15 [d:\th\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 2554]
05 ffffd001`7d53da10 fffff801`63c47e5d dxgmms1!VidSchiRecoverFromTDR+0x11b [d:\th\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidscher.cxx @ 1055]
06 ffffd001`7d53dbc0 fffff801`aa55c698 dxgmms1!VidSchiWorkerThread+0x8d [d:\th\windows\core\dxkernel\dxgkrnl\dxgmms1\vidsch\vidschi.cxx @ 426]
07 ffffd001`7d53dc00 fffff801`aa5c9306 nt!PspSystemThreadStartup+0x58 [d:\th\minkernel\ntos\ps\psexec.c @ 6845]
08 ffffd001`7d53dc60 00000000`00000000 nt!KxStartSystemThread+0x16 [d:\th\minkernel\ntos\ke\amd64\threadbg.asm @ 80]
Вы также можете задать точку останова в коде, ведущую к этому коду остановки, и попытаться выполнить один шаг вперед в код сбоя, если вы можете последовательно воспроизвести код остановки.
Дополнительные сведения см. в разделе "Анализ файлов аварийного дампа с помощью WinDbg".
Если вы не оснащены отладчиком Windows для работы с этой проблемой, можно использовать некоторые основные методы устранения неполадок.
Проверьте системный журнал в Просмотр событий для других сообщений об ошибках, которые могут помочь определить устройство или драйвер, вызывающий эту ошибку.
Если драйвер определен в сообщении проверки ошибок, отключите драйвер или обратитесь к изготовителю обновлений драйверов.
Убедитесь, что все связанные с графикой программы, такие как DirectX и OpenGL, актуальны, и все приложения с интенсивным графикой (например, игры) полностью исправлены.
Убедитесь, что любое установленное оборудование совместимо с установленной версией Windows. Например, можно получить сведения о требуемом оборудовании в спецификациях Windows 10.
Запустите средство диагностики памяти Windows, чтобы проверить память. В поле поиска панели управления введите память и выберите "Диагностика проблем с памятью компьютера". После выполнения теста используйте средство просмотра событий для просмотра результатов в системном журнале. Найдите запись MemoryDiagnostics-Results, чтобы просмотреть результаты.
Можно попробовать запустить средство диагностики оборудования, предоставленное производителем системы.
Использование безопасного режима
Рекомендуется использовать безопасный режим, чтобы изолировать эту проблему. Использование безопасного режима загружает только минимальные необходимые драйверы и системные службы во время запуска Windows.
- Чтобы войти в безопасный режим, перейдите в раздел "Обновление и безопасность " в разделе "Параметры".
- Выберите "Дополнительное запуск восстановления>", чтобы загрузиться в режим обслуживания.
- В результирующем меню выберите пункт "Устранение неполадок>с параметрами запуска дополнительных> параметров".>
- После перезапуска Windows на экране "Параметры запуска" выберите параметр, 4, 5 или 6, чтобы загрузиться в безопасный режим.
Безопасный режим может быть доступен, нажав клавишу функции при загрузке, например F8. Сведения от производителя см. в конкретных параметрах запуска.
Общие сведения об устранении неполадок см. в разделе "Анализ данных с синим экраном".
Замечания
Сведения о требованиях, которые должны соответствовать аппаратным устройствам при реализации TDR, см . в документации по комплекту оборудования Windows. Например, TDR2 — стандартный двухфакторный график тестирования устройств.
См. также
Bug Check Code Reference (Справочник с кодами критических ошибок)