| Предыдущий | Следующий |
| SPIN_LOCK_NOT_OWNED | TRAP_CAUSE_UNKNOWN |
THREAD_NOT_MUTEX_OWNER
Нарушение владения мьютексом при THREAD_NOT_MUTEX_OWNER
THREAD_NOT_MUTEX_OWNER — это код проверки ошибки 0x00000011. Мьютексы ядра являются объектами синхронизации, принадлежащими конкретному потоку. Эта проверка означает, что учёт владельца больше не соответствует пути освобождения или ожидания. Обычно драйвер использовал неверный объект, неверный контекст потока либо ошибочный путь раскрутки стека.
Как интерпретировать THREAD_NOT_MUTEX_OWNER в дампе
- Определите поток в дампе и сопоставьте его с владельцем мьютекса.
- Проверьте пути APC, рабочих потоков, завершения операций и очистки, которые выполняются не в том потоке, где объект был захвачен.
- Этот сбой отличается от неправильного использования спин-блокировки, поскольку владение мьютексом связано с потоком.
Что проверить при THREAD_NOT_MUTEX_OWNER
- Убедитесь, что освобождение блокировки выполняется в рамках той же модели владения, которая использовалась при её захвате.
- Проверьте передачу работы между системными потоками, рабочими элементами, функциями обратного вызова и процедурами отмены.
- При воспроизводимых нарушениях владения и порядка блокировок используйте Driver Verifier с проверкой взаимоблокировок.
Ссылки для THREAD_NOT_MUTEX_OWNER
- Процедуры поддержки режима ядра
- Справочник кодов проверки ошибок Microsoft
- Файлы дампа сбоя и WinDbg
Данные дампа для THREAD_NOT_MUTEX_OWNER
Для THREAD_NOT_MUTEX_OWNER сохраните полный дамп, четыре параметра проверки ошибки, точную сборку Windows, список загруженных модулей и хронологию событий непосредственно перед остановкой. AllStat описывает состояние как «THREAD_NOT_MUTEX_OWNER»; эта формулировка определяет класс сбоя, а параметры и стек показывают, какой объект, драйвер, процессор или экземпляр подсистемы участвовал в нём.
Порядок анализа THREAD_NOT_MUTEX_OWNER
- Выполните в WinDbg команду
!analyze -v, затем изучите документированное значение каждого параметра THREAD_NOT_MUTEX_OWNER, а не полагайтесь только на строку probably-caused-by. - Найдите самое раннее аномальное событие: обновление драйвера, изменение микропрограммы, сброс устройства, ошибку хранилища, отчёт Driver Verifier, исчерпание ресурсов или зависание приложения, связанное с потоком, мьютексом или владельцем.
- При анализе THREAD_NOT_MUTEX_OWNER сохраните в перечне модулей сторонние драйверы фильтрации, безопасности, хранения данных, графики и виртуализации: удаление этих компонентов до разбора дампа может скрыть ответственный путь выполнения.
Не перезагружайте многократно компьютер с THREAD_NOT_MUTEX_OWNER до сохранения дампа и журналов событий. Для THREAD_NOT_MUTEX_OWNER выбирайте восстановительные действия по компоненту, указанному стеком и параметрами, а не только по символическому имени стоп-кода.
Данные дампа для THREAD_NOT_MUTEX_OWNER
Для THREAD_NOT_MUTEX_OWNER сохраните полный дамп, четыре параметра проверки ошибки, точную сборку Windows, список загруженных модулей и хронологию событий непосредственно перед остановкой. AllStat описывает состояние как «THREAD_NOT_MUTEX_OWNER»; эта формулировка определяет класс сбоя, а параметры и стек показывают, какой объект, драйвер, процессор или экземпляр подсистемы участвовал в нём.
Порядок анализа THREAD_NOT_MUTEX_OWNER
- Выполните в WinDbg команду
!analyze -v, затем изучите документированное значение каждого параметра THREAD_NOT_MUTEX_OWNER, а не полагайтесь только на строку probably-caused-by. - Найдите самое раннее аномальное событие: обновление драйвера, изменение микропрограммы, сброс устройства, ошибку хранилища, отчёт Driver Verifier, исчерпание ресурсов или зависание приложения, связанное с потоком, мьютексом или владельцем.
- При анализе THREAD_NOT_MUTEX_OWNER сохраните в перечне модулей сторонние драйверы фильтрации, безопасности, хранения данных, графики и виртуализации: удаление этих компонентов до разбора дампа может скрыть ответственный путь выполнения.
Не перезагружайте многократно компьютер с THREAD_NOT_MUTEX_OWNER до сохранения дампа и журналов событий. Для THREAD_NOT_MUTEX_OWNER выбирайте восстановительные действия по компоненту, указанному стеком и параметрами, а не только по символическому имени стоп-кода.
Нужно найти другой код? Найти другой код состояния или ошибки.