0x0000007F: UNEXPECTED_KERNEL_MODE_TRAP (общий обзор)

Эта ошибка означает, что произошло непредвиденное прерывание в режиме ядра, или вид прерывания, которое ядро не разрешает (захват(a bound trap)), или вид прерывания, которое влечёт за собой немедленную смерть (двойная ошибка(double fault)). Первое число в интервалах кода бага — число прерывания (8 = double fault). Чтобы узнать больше, что это за прерывание, обратитесь к мануалу Intel x86 семьи.
Пользуясь отладчиком ядра (kernel debugger), KB и !TRAP можно выяснить от куда прерывание происходит.
В общем, баг появляется, когда процессор допускает ошибку, с которой ядро не может справиться. Чаще всего возникает из-за плохого RAM, так же из-за разгона процессора.
Попробуйте отменить в BIOS — sync negotiation (синхронная передача данных).
Windows XP
Причина:
Stop 0x7F сообщение указывает на то, что одна из 3-ёх проблем появилась в режиме ядра (kernel-mode):
- Ситуация, которую ядро не допускает, или прерывание (так же называется — bound trap).
- Проблема программного обеспечения.
- Ошибки устройств.
Параметры:
1. Исключительный код процессора.
2. Это значение 0x00000000 (ноль).
3. Это значение 0x00000000 (ноль).
4. Это значение 0x00000000 (ноль).
Первый параметр самый важный и он может принять насколько различных значений, указывающих на разные причины этой ошибки. Вы можете найти условия возникновения Stop 0x7F на всех x86 микропроцессорах в их мануале, т.к они специфичны для x86 платформ. Вот несколько часто встречающихся:
- 0x00000000, или ошибка деления на 0, возникает когда «делить» (DIV) инструкция делит на 0. Битая память, другие проблемы с оборудованием или проблемы с ПО могут привести к этой ошибке.
- 0x00000004, или Переполнение, в результате предыдущих операций был взведён флаг переполнения (OF), а процессор обращается к модулю прерывания.
- 0x00000005, or Bounds Check Fault, указывет, что процессор, во время выполнения операции BOUND, обнаружил, что операнд (оп.код операции) превысил указанный лимит. Инструкция BOUND используется, чтобы проверять, что числа массива находятся в определённом промежутке.
- 0x00000006, or Invalid Opcode, возникает, когда процессор пытается выполнить недопустимую операцию. Обычно такое случается, когда указатель инструкций (instruction pointer) неисправен из-за повреждённой памяти и указывает на неверную позицию.
- 0x00000008, или Двойная Ошибка (Double Fault), указывает на двойное исключение во время попытки вызвать модуль (the handler). Обычно, два исключения могут быть выдержанны в очереди, но есть несколько исключений (почти всегда вызванных проблемами с устройствами), из-за которых процессор вызывает двойную ошибку.
Реже встречающиеся ошибки:
- 0x00000001: A system-debugger call.
- 0x00000003: A debugger breakpoint.
- 0x0000000A: A corrupted Task State Segment.
- 0x0000000B: An access to a memory segment that was not present.
- 0x0000000C: An access to memory beyond the limits of a stack.
- 0x0000000D: An exception not covered by some other exception; a protection fault that pertains to access violations for applications.
Решение:
Следующие решения специфичны к Stop 0x7F ошибкам. для дополнительной информации обратитесь к статье M$ «Stop Message Checklist».
1. Stop 0x7F ошибки обычно возникают из-за испорченной, плохо работающей памяти (RAM). Если вы только что подключили новое устройство — отключите его и посмотрите, если это решит проблему. Запустите диагностическое ПО, которое пришло к вам от производителя системы, чтобы выявить если какой-нибудь компонент не рабочий/плохо работает.
2. Разгон процессора (overclocking) может стать причиной Stop 0x7F или другие ошибки из-за перегрева. Когда диагностируете разогнанную систему, сначала снимите все разгоны до тех, которые рекомендованы производителем.
3. Проблема может быть из-за поцарапанных, испорченных компонентов на материнской плате. В этом случае вам необходимо отнести мат. плату на диагностику.
4. Stop 0x7F сообщение может появиться после установки несовместимого ПО, драйверов или системных сервисов. Свяжитесь с производителем ПО и выясните о каких-либо дополнительных обновлений для Windows XP Professional. Использование совместимых программ особенно важно в случае с Бэкапными программами (backup programs), мультимедийным ПО, антивирусными и CD-записывающими программами.
Ошибка 0x0000007F синий экран смерти (BSOD)
Текст ошибки:
UNEXPECTED_KERNEL_MODE_TRAP
*** STOP: 0x0000007f ( 0x******** , 0x********, 0x********, 0x********)
Описание ошибки:
Ошибка 0x0000007f возникает в виде синего экрана «смерти». Такое сообщение свидетельствует о появлении в режиме ядра ловушки, которую ядро не может обработать или которую не удается устранить.
Причины ошибки 0x0000007f:
Ниже перечислены наиболее частые причины возникновения ошибки STOP 0x0000007F.
- Проблемы с программным обеспечением компьютера или оборудованием.
- Чрезмерный разгон процессора, так называемый overclocking.
- Неисправность одного или нескольких модулей оперативной памяти.
- Неисправность жесткого диска (в этом не так давно наш редактор убедился лично).
- Неисправность материнской платы.
Диагностика ошибки 7f:
Для устранения данной ошибки необходимо проанализировать сообщение о ней.
Для выяснения причин, наиболее важно значение первого параметра (выделен красным).
Далее в таблице рассмотрены несколько значений этого параметра и их описание:
Ошибка возникает при выполнении операции DIV с делителем равным 0. Это может быть вызвано повреждением памяти (или другими проблемами с оборудованием), а также сбоем в работе программного обеспечения.
Инструкция переполнения выполняется когда процессор вызывает программу обработки прерываний при установленном флаге переполнения.
Ошибка проверки границ.
Ошибка генерируется, если процессор, выполняя инструкцию BOUND, обнаруживает, что значение операнда выходит за установленные границы. Инструкция BOUND используется для проверки соблюдения границ массива.
Недействительный код операции.
Такая ошибка генерируется, если процессор пытается выполнить недействительную инструкцию. Причиной этого, как правило, является поврежденный указатель инструкции, указывающий на неправильное место. Чаще всего это вызвано повреждением памяти.
Двойная ошибка — это ситуация, когда при попытке вызвать программу обработки для предыдущего исключения возникает новое исключение. Обычно два исключения обрабатываются последовательно, однако существует несколько исключений которые не могут быть обработаны таким образом. В этом случае процессор сообщает о возникновении двойной ошибки. Основные причины возникновения ошибки: оборудование и переполнение стека ядра. Проблема обычно связана с функционированием центрального процессора, памяти или шины. Переполнение стека ядра практически всегда вызвано поврежденными драйверами режима ядра.
Возможное решение:
Вспомните ваши последние действия которые вы производили с программным или аппаратным обеспечением компьютера.
- Если перед появлением ошибки вы устанавливали в компьютер какое либо оборудование, новое или б\у, вероятно причина ошибки 7f именно в этом оборудовании. Попробуйте обновить драйвера для этого оборудования скачав их последние версии с сайта производителя. Если обновление драйверов не дало положительного результата, отсоедините установленное недавно оборудование.
- Очень часто данная ошибка появляется при неисправности модулей оперативной памяти. Проверьте, правильно ли они установлены, до конца ли вставлены. Если вы не обнаружили проблем с правильностью их установки, Выньте все модули кроме одного. Проверьте программой MemTest каждый модуль по отдельности и определите сбойный.
- Неисправный жесткий диск также может стать причиной ошибки 7f (в нашем случае сильно грелась плата контроллера).
- Проверьте материнскую плату. Возможно повреждение элементов на плате. Рассмотрите визуально материнскую плату на наличие сколов, царапин, отошедших элементов.
- Если ошибка произошла после установки обновлений операционной системы, обновления драйвера или антивирусного ПО, загрузите компьютер в режиме «Загрузка последней удачной конфигурации (с работоспособными параметрами)». Данный режим позволяет «откатить» одно последнее действие (обновление, установка драйвера и т.д.).
- Проверьте температуру элементов материнской платы, жесткого диска, графического адаптера, процессора. Это можно сделать при помощи таких программ как AIDA64.
- Проверьте надежность всех соединений.
Синий экран ошибка 0x0000007F: UNEXPECTED_KERNEL_MODE_TRAP
В режиме ядра возникло незапланированное прерывание, которое не было разрешено самим ядром.
Причины возникновения
Проведена установка дополнительных устройств, которые обладают дефектами или имеют проблемы иного типа. Когда в работе указанного оборудования происходит отказ, то может появиться такая ошибка. Другой причиной требуется назвать переполнение стека ядра. Оно возникает в случае неоднократного подсоединения драйвера к одному стеку.
Параметры
На синем экране появляется следующая надпись:
STOP: 0x0000007F (parameter1, parameter2, parameter3, parameter4)
Наибольшую важность играет значение parameter1. Особенности его значений будут рассмотрены далее:
- 0x00000000. Произошло деление на 0, которое вызвано дефектом памяти, различными аппаратными проблемами или ошибками в ПО.
- 0x00000004. Процессор попытался осуществить вызов к обработчику прерываний, когда уже задан флаг переполнения.
- 0x00000005. Произошел отказ от граничной проверки.
- 0x00000006. Возникает в том случае, когда процессор стремится осуществить недопустимые действия. Это часто появляется при дефекте указателя команд.
- 0x00000008. В процессе вызова обработчиком предыдущего исключения произошло новое исключение. Таким образом, появляется проблема двойного отказа.
- 0x0000000B. Произошла попытка получения доступа к участку памяти, который не существует.
- 0x0000000C. Произошла попытка получения доступа к участку памяти, расположенному за пределами стека.
- 0x0000000D. Возникло нарушение права доступа некоторой программы.
- 0x0000000A. Имеется дефект TSS.
Существуют и другие варианты, но выше указаны наиболее распространенные.
Способы решения
- Выполнить освобождение большего количества свободного места на диске.
- Провести проверку компьютера на предмет наличия вирусов.
- Загрузить обновление Service pack до последней версии и установить его.
- Проблема может заключаться в установке дефектного или неправильного драйвера. Если подобные действия осуществлялись, рекомендуется выполнить их откат.
- Восстановить систему, используя один из ранее созданных бэкапов.
- Производится переход к просмотру настроек BIOS, после чего они сбрасываются к стандартным.
- Необходимо запустить специальное ПО для проверки дефектов оперативной памяти.
- Проводится проверка жесткого диска. Интересуют поврежденные сектора или логические ошибки. Потребуется осуществить установку специализированных приложений.
Рассмотренные способы решения необходимо назвать общими. Следует рассмотреть адресную помощь, которая необходима в случае конкретных осложнений. Более детально это будет учтено далее.
Сбой происходит в ходе установки Windows XP
Предполагается, в на определенном этапе установки операционной системы, подобный процесс будет прерван и на экране появится сообщение об ошибке 0x0000007F. Когда страница приветствия будет выдана, устройство отключится или начнется рестарт. Как показывает практика, наиболее частой проблемой необходимо назвать несовместимость версий используемой микропрограммы или неправильное задание настроек BIOS.
Чтобы ошибка больше не появлялась, требуется провести определенные мероприятия. Наиболее простым подходом можно назвать сбрасывание настроек BIOS до их состояния «по умолчанию». Когда эффект от подобных действий отсутствует, требуется провести обновление действующей прошивки BIOS. Можно порекомендовать переустановить ОС Windows. В ходе выполнения поставленной задачи появится предложение нажать F6 и это необходимо выполнить (производится установка дополнительных драйверов). Следующая задача заключается в том, чтобы нажать F7 и выбрать ядро HAL. Таким образом, можно будет избежать применения устройством ACPI HAL. Предполагается осуществление работы только с обычной версией HAL.
Сбой возникает при начале работы Symantec AntiVirus
Антивирусное ПО Symantec AntiVirus способно привести к появлению ошибки данного типа. Причиной необходимо назвать недостаточно большое пространство ядра, которого не хватает для выполнения задачи обработки драйверов. Проблема данного антивируса заключается в его подходе к проверке документов на наличие вредоносного ПО. Используемые запросы ввода-выдачи способны занимать дополнительное место ядра, которое необходимо самому устройству.
Наиболее простым и доступным способом устранения ошибки требуется назвать изменение настроек. В реестр нужно внести параметр KStackMinFree. Его показатель устанавливает наименьшее место ядра, отводимое приложениям Symantec AntiVirus или Norton AntiVirus для осуществления запросов ввода-выдачи. Предусматривается выполнение определенной последовательности действий:
- Проводится открытие редактора реестра. После этого необходимо осуществить переход в HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Norton AntiVirus NT\Auto-Protect\InternalSettings
- Требуется создать новый параметр, который будет относиться к категории DWORD и иметь название KStackMinFree. Нужно установить его показатель 2200.
- Осуществляется рестарт устройства.
Описанные выше действия подходят для тех случаев, когда применяются устаревшие версии описанных программ. Обновленное ПО использует несколько иные способы работы, что должно приниматься во внимание.
- Проводится открытие редактора реестра. После этого необходимо осуществить переход в HKEY_LOCAL_MACHINE\SOFTWARE\INTEL\LANDesk\VirusProtect6\CurrentVersion\Storages\Filesystem\RealTimeScan
- Требуется создать новый параметр, который будет относиться к категории DWORD и иметь название KStackMinFree. Нужно установить его показатель 2200.
- Осуществляется рестарт устройства.
Таким образом, главное отличие заключается в расположении документа, куда будут вноситься изменения.
Сбой в случае добавления модуля памяти с применением функции Hot Add Memory
Ошибка данного типа является характерной для операционных систем Windows Server 2003 различного типа. Условия появления предполагают немалое разнообразие:
- Устройство осуществляет свою деятельность под контролем чипсета 64-bit.
- Используется тридцатидвухразрядная версия ОС и на ней установлен сервисный пакет обновлений SP1.
- Устройство обладает модулем памяти с объемом 4 Гб или после добавления дополнительного модуля указанный показатель превысил данное число.
Когда подобные факторы имеют место быть, появляется синий экран смерти с ошибкой 0x0000007F.
Решение подобной проблемы является проведение мероприятий, направленных на проверку установленного объема оперативной памяти. Она должна составлять не менее 4 Гб на момент до запуска функции Hot Add Memory. Другой вариант заключается в том, что необходимо убедиться – устройства не должны ограничиваться применением исключительно 32-х битной DMA RAM.
Сбой в результате однобитной ошибки в ESP регистре процессора
Отличительной особенностью является появление проблемы на тех устройствах, для которых применяется процессор типа Intel Xeon или иные модели, схожие с ним. Предусматривается появление сообщения следующего типа на синем экране:
STOP: 0x0000007F (parameter1, parameter2, parameter3, parameter4) UNEXPECTED_KERNEL_MODE_TRAP
Главным признаком именно этой проблемы считается parameter1= 0x00000008. Таким образом, можно говорить о появлении двойного исключения. Другой вариант заключается в сбое, произошедшем в одном из битов регистра ESP. Он включает в себя адрес, расположенный вне стека действующего потока.
Указанный вид сбоя появляется в различных ситуациях, но основными виновниками можно назвать:
- Системой BIOS устройства не выполнены действия, направленные на установку микрокода для функционирования процессора.
- Сам процессор имеет дефект или иную проблему, не позволяющую ему работать в соответствии с инструкциями.
- Условия работы процессора не удовлетворяют нормам. Например, часто приходится иметь дело с повышенной температурой или сильных перепадах питающего напряжения.
Существует несколько способов, которыми можно выполнить решение задачи избавления от ошибки.
Подход №1
Осуществляется проверка того, какая используется версия микрокода. Производитель стремится сделать свой продукт максимально более эффективным. Каждая последующая версия обладает доработками и улучшениями. Установка последнего обновления часто позволяет решить множество проблем. Предполагается возможность решения сбоев в логических процессах. Отдельным моментом является тот факт, что не предполагается хранение обновлений непосредственно в процессоре. Они находятся на диске устройства и загружаются при начале работы компьютера. Для выполнения указанного процесса используется система BIOS или специальный драйвер Update.sys.
Следует описать порядок действий в тех случаях, когда применяется процессор Intel. Подобный вариант является довольно распространенным. Указанный тип процессоров читается самым популярным. Чтобы найти обновления микрокода, рекомендуется применять специализированное ПО. Программу для осуществления поставленных задач можно скачать по указанной ссылке: //support.intel.com/support/processors/tools/frequencyid. Она выдаст довольно большое количество информации об используемом на устройстве процессоре. Отдельный интерес представляет семейство, модель, а также степпинг и редакция. Именно эти значения позволяют точно говорить о конкретной модели процессора.
Несмотря на все старания специалистов, существует несколько моделей процессоров, которые наиболее чувствительны к ошибке 0x0000007F. Например, можно отметить семейство Intel Xeon под номером 15. Модели со степпингом 9 и применяющие набор микросхем ServerWorks. В большинстве ситуаций, именно он становятся причиной описанных сбоев.
Для эффективной и бессбойной работы оборудование требуется использовать редакцию 0x18 или выпущенную позже. В том случае, если указанный показатель составляет 0, это означает отсутствие в BIOS обновлений микрокода. Предполагается требование провести обновление непосредственно BIOS.
Подход №2
Выполняется проверка, цель которой заключается в определении исправности или неисправности процессора. Предполагается необходимость извлечь данное изделие и установить его на другой компьютер. После этого происходит анализ работы устройства – возникает ли на нем аналогичная проблема. Если нет, то логичным объяснением является исправность процессора – сбой придется искать в другом месте. Главной сложностью является наличие определенных навыков в данной сфере. Рекомендуется предоставить выполнение поставленной задачи профессионалу, чтобы он обеспечил максимальное качество подобных работ.
Подход №3
Отдельного внимания заслуживает такой момент, как условия работы процессора. Довольно большое количество факторов способно привести к выходу за пределы оптимальной эксплуатации. Нередко возникает повышенная температура, избыточное количество пыли или многое другое. Здесь можно отметить преобладание механических и физических факторов. Выполняется разбор компьютера и проверка условий работы процессора. Нужно очистить пространство рядом с ним от пыли, проверить работоспособность вентиляторов и рассмотреть другие причины, способные вызвать перегрев.
Другой вариант заключается в выходе параметров питания за допустимые рамки. Это не менее серьёзная проблема, но выявить её не так просто. Некачественное напряжение способно очень быстро вывести из строя компьютерное оборудование. Если причина именно в нем, рекомендуется использовать стабилизатор напряжения.
Уточнение причин ошибки
Следует подробнее рассмотреть проблему двойного исключения. Она возникает тогда, когда со стороны регистра ESP происходит ссылка на недействительный адрес. Можно говорить о том, что поставлена задача установить, является ли появление ошибки 0x0000007F вызванным сбоем в одном из битов регистра ESP. Предусматривается осуществление следующих мероприятий:
- Скачайте программу Microsoft Debugging и монтируйте её на устройство. Она необходима для того, чтобы обеспечить определение любых сбоев в работе системы.
- Осуществляется запуск WinDbg. Интересующий документ дампа памяти должен быть открыт внутри данной программы.
- Когда поставлена задача анализа файла дампа, требуется использовать команду !analyze –v.
- Происходит выдача подробной информации. Необходимо обеспечить её проверку для того, чтобы можно было точно установить причину возникновения проблемы. Отдельное внимание уделяется факторам выявления двойных сбоев. Когда они обнаружены, выполняется команда tss 28. Она позволяет предоставить сведения о состоянии системы в период появления ошибки.
- Для выдачи диапазона адресов под конкретный стек действующего потока применяется команда !thread. Двойное исключение наиболее распространено в тех ситуациях, когда адрес выходит за пределы заданного диапазона. В случае стабильной деятельности, предусматривается показатель регистра ESP в границах между базовым и наименьшим адресом стека.
- С целью установления разницы между показателями регистров ESP и EBP, следует запустить команду .formats esp ^ ebp. В том случае, когда сбой не появлялся, показатель в регистре EBP станет обладать незначительным отличием от показателя указателя стека в регистре ESP. Применение команды эффективно устанавливает бит, включающий в себя ошибку. Показатели регистров ESP и EBP должны иметь различие только на 1.
Подобная программа позволяет получить в распоряжение различные сведения. Наибольшую важность играет обеспечение данных об используемом процессоре. Для получения указанной информации надо ввести команду !cpuinfo. Результат будет выдан в виде таблицы технических параметров.


