0x4000008A проверки ошибок: THREAD_TERMINATE_HELD_MUTEX
Проверка ошибок THREAD_TERMINATE_HELD_MUTEX имеет значение 0x4000008A. Это означает, что драйвер приобрел мьютекс в потоке, который завершил работу до освобождения мьютекса. Это может быть вызвано тем, что драйвер возвращается в пользовательский режим без освобождения мьютекса или драйвер получает мьютекс, а затем вызывает исключение, которое приводит к завершению потока, в котором он выполняется.
Важно!
Эта статья предназначена для программистов. Если вы являетесь клиентом, который получил код ошибки "синий экран" во время работы с компьютером, см. статью Устранение ошибок синего экрана.
Параметры THREAD_TERMINATE_HELD_MUTEX
Параметр | Описание |
---|---|
1 | Адрес KTHREAD, которому принадлежит KMUTEX. |
2 | Адрес принадлежащей ей KMUTEX. |
3 | Зарезервировано |
4 | Зарезервировано |
Причина
Расширение отладки !analyze отображает сведения об ошибке проверка и может быть полезно для определения первопричины.
Чтобы разобраться, посмотрите на мешок вызовов. Если в стеке есть драйвер, за которым непосредственно следуют процедуры обработки системных исключений, а затем подпрограммы завершения потоков, этот драйвер неисправен и должен быть исправлен, чтобы не вызывать необработанное исключение при удержании мьютекса ядра. Если в стеке отображается обычный код завершения потока и драйвер не связан, запустите !pool или используйте ln (список ближайших символов) по адресу мьютекса (параметр 2), чтобы узнать, кто владеет им. Эта ошибка почти наверняка будет находиться в коде владельца этого мьютекса.