Синий экран смерти ошибка 0x0000007f

Обсуждение проблем, связанных с ПО для компьютеров

Модераторы: Al_lexx, Sharp, ionika, Happy_MAN, 0xFF, Atom, Serega S.U.

Ответить
dmc
Сообщения: 4
Зарегистрирован: 23 окт 2007, 21:03

Синий экран смерти

Сообщение dmc »

Друзья помогите! Выскакивает синий экран смерти, даже при простое компа без нагрузки! выдает код ошибки 0*0000007F , знания моего английского позволяют понять что проверить нужно память, дрова и видекарту! а в чем корень зла не пойму! опишите что нужно сделать протестить, а то это сообщение пишу в 7 раз)!
спасибо огромное!
Аватара пользователя
KPeMaTorii
Двуликий
Сообщения: 1061
Зарегистрирован: 17 июл 2006, 11:55

синий экран смерти

Сообщение KPeMaTorii »

1)скрин БСОДа
2)конфиг ПОЛНЫЙ (с обязательным указанием марки питальника)
3)возраст\температурный режим железа
4)Давно ли началось?
5)ну и память, дрова и видекарту проверяйте раз знания английского позволяют это понять :)
-админить локалхост наша стратегическая задача!

Это у них кризис, а у нас как всегда.
dmc
Сообщения: 4
Зарегистрирован: 23 окт 2007, 21:03

Сообщение dmc »

Как сделать скрин БСОДа не знаю.
компу 4 года питальник на 350 вт, inwin шел с корпусом
возраст мать, видяха, часть оперативки, один хард всем по 4 года.
началось 2-3 дня назад, после того как словил вирусняк и чистил комп антивирусом, возможно дело в нем, вот сейчас я загрузился с образа диска от 25 августа, пока все пашет без збоев. так что возможно проблема софтовая, а вот какая не пойму!
dmc
Сообщения: 4
Зарегистрирован: 23 окт 2007, 21:03

Сообщение dmc »

Хотя бы свисни где копать, простоработать с образом от 25 августа не очень удобно, многие проги потеряны получаются, ди и инфа тоже.
Аватара пользователя
KPeMaTorii
Двуликий
Сообщения: 1061
Зарегистрирован: 17 июл 2006, 11:55

Сообщение KPeMaTorii »

если с образа все норм, значит проблема в софте, тем более что началась после вируса. А вместо раскопок лучше слить инфу куда-нибудь
и систему переустановить. Готов поспорить за 4 года ни разу не переставлялась, а такой срок винде критичен.


Кстати, "ПОЛНЫЙ конфиг" означает, что вы должны назвать все железки
"по-имени" а не мать видюха и т.д. про то что в компе есть мать, проц, и тд мы тут все в курсе. А вот какие именно у вас, нет. Но, это так на будущее.
-админить локалхост наша стратегическая задача!

Это у них кризис, а у нас как всегда.
Аватара пользователя
VPoluektov
Сообщения: 3436
Зарегистрирован: 06 окт 2006, 19:14

Сообщение VPoluektov »

Оптимальный вариант для анализа причин BSODов - это:

Включить сохранение минидампов (правой кнопкой My computer - properties - advanced - startup and recovery settings - write debugging information - small memory dump)

Скачать отсюда:
http://www.microsoft.com/whdc/devtools/ ... llx86.mspx
и установить микрософтовский дебаггер.

Если интернета на компьютере с дебаггером в произвольный момент не ожидается - заранее скачать символы отсюда:
http://www.microsoft.com/whdc/DevTools/ ... olpkg.mspx
(да, я знаю, 195 мег). Если ожидается - то можно прописать координаты микрософтовского сервера так, как написано здесь:
http://support.microsoft.com/kb/311503
и он сам будет качать что нужно.

После очередного синего экрана натравить дебаггер на минидамп. Он точно укажет, в каком процессе произошла ошибка. Если процесс все время один - то с ним и разбираться. Если разные - то, вероятно, дело где-то в железе.
ЕХ0
Сообщения: 151
Зарегистрирован: 16 сен 2007, 11:09

Сообщение ЕХ0 »

KPeMaTorii писал(а):1)скрин БСОДа
сам то понял что написал :)
ASUS P3B-F
Tulatin 1113/512/133
ASUS Ti4200s
1GB Kingmax
PCI UDMA133 controller (CMD)
AUDIGY1
Аватара пользователя
Atom
Концептуальный
Сообщения: 1873
Зарегистрирован: 09 июн 2006, 21:39
Откуда: местный
Контактная информация:

Сообщение Atom »

ЕХ0
Экран можно сфоткать. Современным телефоном, например. Так что тут нет "подвоха". :wink:
На каждую мышку найдётся своя кошка. : )
DENON
Сообщения: 20
Зарегистрирован: 03 ноя 2006, 15:48

Сообщение DENON »

Эта ошибка означает, что произошло непредвиденное прерывание в режиме ядра, или вид прерывания, которое ядро не разрешает (захват(a bound trap) или вид прерывания, которое влечёт за собой немедленную смерть (двойная ошибка(double fault)). Первое число в интервалах кода ошибки - число прерывания (8 = double fault). Чтобы узнать больше, что это за прерывание, обратитесь к мануалу Intel x86 семьи. Пользуясь отладчиком ядра (kernel debugger), KB и !TRAP можно выяснить откуда прерывание происходит. В общем, ошибка появляется, когда процессор допускает ошибку, с которой ядро не может справиться. Чаще всего возникает из-за неисправного модуля памяти, также из-за разгона процессора. Попробуйте отменить в BIOS - sync negotiation (синхронная передача данных).


--------------------------------------------------------------------------------


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 Professionall

Stop 0x0000007F or UNEXPECTED_KERNEL_MODE_TRAP

Причина:
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-записывающими программами.

5. Для дополнительной информации обратитесь к статье http://www.microsoft.com/windows/reskits/webresources. Используйте в поиске ключевые слова winnt, 0x0000007F и 0x7F.
--------------------------------------------------------------------------------


Перечень решений:



0x0000007F: возникновение ошибки во время установки Windows XP

0x0000007F: возникновение ошибки при Symantec AntiVirus

0x0000007F: возникновение ошибки при добавлении модуля памяти с использованием функции Hot Add Memory на компьютере с Windows Server 2003 (SP1)

Однобитная ошибка в ESP регистре процессора вызывает STOP 0x0000007F (0x00000008,...)
DENON
Сообщения: 20
Зарегистрирован: 03 ноя 2006, 15:48

Сообщение DENON »

Во время установки Windows XP вы можете столкнуться со следующими симптомами:
- Сообщение об ошибке "STOP 0x0000007f".
- После отображения страницы приветствия компьютер выключается или перезагружается.

Проблема может возникать из-за несовместимости версии микропрограммы или настройки BIOS несовместимы с устанавливаемой операционной системой.

Для решения проблемы последовательно выполните следующие действия:

1. Сбросте настройки BIOS в положение по умолчанию (default)

Если проблема не исчезла, то переходите к пункту 2.

2. Обновите версию прошивки BIOS.

3. В процессе установки в момент когда программа установки Windows показывает предложение нажать F6 для установки дополнительных драйверов, нажмите F7 для выбора ядра HAL для установки. Это предотвратит использование вашим компьютером Advanced Configuration and Power Interface (ACPI) HAL, и будет использована стандартная версия HAL.
DENON
Сообщения: 20
Зарегистрирован: 03 ноя 2006, 15:48

Сообщение DENON »

Симптомы:
При запуске на компьютере программы Symantec AntiVirus Corporate Edition 8.0 или NSI Software`s Double-Take может возникнуть сообщение об ошибке

STOP 0x0000007F (0x00000008, 0x00000000, 0x00000000, 0x00000000) (UNEXPECTED_KERNEL_MODE_TRAP)

Причина:
Такая проблема может возникнуть, если пространства ядра на компьютере недостаточно для обработки драйверов в режиме ядра. Программы, указанные в начале статьи, устанавливают драйвер в режиме ядра и используют драйвер фильтра, регистрирующий в стеке ядра.
Для проверки файла на наличие вируса с помощью функции защиты файловой системы в режиме реального времени программам Symantec AntiVirus и Norton AntiVirus требуется доступ к файлам. Такие запросы на ввод-вывод файла могут занимать дополнительное пространство ядра, используемое компьютером.

Решение:
Для решения этой проблемы добавьте в реестр параметр KStackMinFree. Значение параметра KStackMinFree указывает минимальное пространство ядра, которое должно быть доступно программам Symantec AntiVirus или Norton AntiVirus для запросов ввода-вывода, направляемым к файловой системе.
Для добавления параметра используйте следующие инструкции.

При использовании Norton AntiVirus 7.6 или Symantec AntiVirus 8.x

1. Откройте редактор реестра и перейдите в ветку

HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Norton AntiVirus NT\Auto-Protect\InternalSettings

2. Создайте параметр типа DWORD с именем KStackMinFree и значением 2200.

3. Перезагрузите компьютер.

При использовании Symantec AntiVirus 9.x или более поздней версии.

1. Откройте редактор реестра и перейдите в ветку

HKEY_LOCAL_MACHINE\SOFTWARE\INTEL\LANDesk\VirusProtect6\CurrentVersion\Storages\Filesystem\RealTimeScan

2. Создайте параметр типа DWORD с именем KStackMinFree и значением 2200.

3. Перезагрузите компьютер.
DENON
Сообщения: 20
Зарегистрирован: 03 ноя 2006, 15:48

Сообщение DENON »

Применяется к системам:
Microsoft Windows Server 2003 Service Pack 1:
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Standard Edition
Microsoft Windows Server 2003 Web Edition

Симптомы:
Ошибка может возникать при следующих условиях:
- Ваш компьютер работает под управлением чипсета 64-bit
- На компьютере установлена 32-х разрядная версия Windows Server 2003 с пакетом исправлений 1 (SP1).
- Компьютер оборудован 4 Гигабайтами (GB) памяти.
- На компьютер добавлен модуль памяти. - После добавления модуля памяти объем памяти превысил 4 GB.
При выполнении данных условий компьютер перестает отвечать на запросы или появляется сообщение об ошибке "Stop 0x0000007F".

Причина:
Ошибка возникает из-за того, что Windows Server 2003 SP1 не может использовать двойную буферизацию DMA-доступа к памяти 32-х разрядных устройств.

Решение:
Для решения проблемы убедитесь, что у вас установлено как минимум 4 Гб оперативной памяти до включения функции Hot Add Memory
Или убедитесь что ваши устройства не ограничены использованием только 32-х битной DMA RAM.
DENON
Сообщения: 20
Зарегистрирован: 03 ноя 2006, 15:48

Сообщение DENON »

Однобитная ошибка в ESP регистре процессора вызывает STOP 0x0000007F (0x00000008,...)
0x0000007F (0x00000008, 0x00000000, 0x00000000, 0x00000000)
UNEXPECTED_KERNEL_MODE_TRAP

Симптомы
Ошибка может возникать на компьютерах под управлением Windows, оснащенных процессором Intel Xeon (или другими). При этом ошибка следующего вида

STOP 0x0000007F (0x00000008, 0x00000000, 0x00000000, 0x00000000) UNEXPECTED_KERNEL_MODE_TRAP

При возникновении ошибки наблюдаются следующие признаки.
- Первый параметр в данном сообщении равен 0x0000008 (ошибка является двойным исключением).
- Вследствие ошибки в одном из битов регистра ESP данный регистр содержит адрес, находящийся за пределами стека текущего потока.

Данная проблема возникает в следующих случаях.
- Система BIOS компьютера не загрузила обновление микрокода, необходимое для работы процессора компьютера.
- Процессор поврежден или неисправен.
- Нарушены условия эксплуатации процессора (процессор эксплуатируется при недопустимой температуре, неверном напряжении питания или с неверной частотой).

Решение

Способ 1
Определите, установлена ли на компьютере последняя версия обновления микрокода.
Обновление микрокода исправляет ошибки во внутренней логике процессора. Обновления микрокода не могут храниться в процессоре и загружаются в процессор при каждой загрузке компьютера. Загрузка обновлений микрокода выполняется системой BIOS или драйвером Update.sys.
Если на компьютере установлен процессор, выпущенный компанией Intel, то для определения версии обновления микрокода, загружаемого в данный процессор загрузите программу определения частоты процессора Intel с сайта
http://support.intel.com/support/proces ... requencyid; после чего установите и запустите программу.
Запишите следующие сведения:
- семейство;
- модель;
- степпинг;
редакция.
Номера семейства, модели и степпинга однозначно определяют тип процессора. Редакция процессора позволяет определить версию загруженного обновления микрокода.
Признаки, описанные в данной статье, наиболее часто наблюдаются на процессорах Intel Xeon с номером семейства 15, номером модели 2 и степпингом 9, которые установлены на системных платах, использующих набор микросхем ServerWorks (шестнадцатеричные значения указанных выше номеров семейства, модели и степпинга равны F, 2 и 9 соответственно). Чтобы эти процессоры работали правильно, необходима редакция 0x18 или более поздняя (значение 0x18 — это шестнадцатеричное представление десятичного числа 24).
Если номер редакции равен 0, значит, система BIOS компьютера не содержит обновление микрокода для установленных на компьютере процессоров. В этом случае необходимо установить обновление для BIOS, которое содержит обновление микрокода, поддерживающее используемые процессоры.

Способ 2
Убедитесь, что процессор исправен
Если у вас есть такая возможность, то попробуйте установить ваш процессор на компьютер, на котором указанная проблема не возникает либо установите на компьютер на котором проблема наблюдается процессор с компьютера на котором данной проблемы нет.
Внимание! Не производите действия по замене процессора без должной квалификации.
Если после замены процессора на исходном компьютере проблема не исчезнет, а на компьютере, на который установлен исходный процессор, проблема не возникнет, то процессор, скорее всего, исправен и не является причиной ошибки.
Если после замены процессора на исходном компьютере проблема исчезнет, а на компьютере, на который установлен исходный процессор, проблема возникнет, то причиной проблемы, скорее всего, является неисправность процессора.

Способ 3
Проверьте, соблюдаются ли условия эксплуатации процессора.
Высокая температура в помещении, плохая вентиляция или накопление пыли могут вызывать сбои в работе процессоров и других компонентов. Проблемы с вентиляцией могут быть вызваны неработающими вентиляторами или закупоркой вентиляционных каналов. Если внутренняя часть или вентиляционные каналы компьютера заполнены пылью или если описанные признаки наблюдаются только при установке компьютера в определенных местах, причиной проблемы может быть перегрев. Убедитесь, что компоненты компьютера очищены от пыли, вентиляторы работают надлежащим образом, вентиляционные каналы свободны, а место установки компьютера надлежащим образом вентилируется.
Сбои в работе процессоров и других компонентов могут вызываться выходом напряжения питания за допустимые пределы, а также перепадами напряжения. Использование напряжения питания ненадлежащего номинала или плохого качества, перегрузка или сбои блока питания компьютера, а также сбои в работе компонентов системной платы могут привести к тому, что напряжение питания процессора выйдет за допустимые пределы или будет ненадлежащего качества.


Дополнительно

Регистр ESP также называют регистром указателя стека. Стек — это находящаяся в памяти структура данных, в которой хранятся сведения о текущем состоянии выполнения потока. Стек потока используется для отслеживания функций, выполняющихся в настоящий момент, а также для хранения параметров, передаваемых этим функциям, и переменных, используемых данными функциями. Регистр ESP должен содержать адрес вершины стека. Если данный регистр содержит ошибочное значение, он может ссылаться на неверные данные или недействительный адрес. Если регистр ESP ссылается на недействительный адрес, может возникнуть двойное исключение.
Чтобы определить, вызвана ли рассматриваемая STOP-ошибка ошибкой в одном из битов регистра ESP, выполните следующие действия.
1. Установите средство Microsoft Debugging Tools for Windows.
2. Запустите средство WinDbg, откройте нужный файл дампа памяти через меню File -> Open Crash Dump.
Информация, отображаемая при начальном анализе файла дампа, может выглядеть следующим образом.

*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 7F, {8, 0, 0, 0}

Probably caused by : ntkrnlmp.exe ( nt!KiUnlockDispatcherDatabase+1c )

Followup: MachineOwner


3. Чтобы автоматически проанализировать файл дампа, выполните команду !analyze -v. Ниже показан пример выходных данных команды !analyze -v.

0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

UNEXPECTED_KERNEL_MODE_TRAP (7f) This means a trap occurred in kernel mode, and it is a trap of a kind
that the kernel isn`t permitted to have/catch (bound trap) or that
is always instant death (double fault). The first number in the
bugcheck params is the number of the trap (8 = double fault, etc)
Consult an Intel x86 family manual to learn more about what these
traps are. Here is a *portion* of those codes:
If kv shows a taskGate
use .tss on the part before the colon, then kv.
Else if kv shows a trapframe
use .trap on that value
Else
.trap on the appropriate frame will show where the trap was taken
(on x86, this will be the ebp that goes with the procedure KiTrap)
Endif
kb will then show the corrected stack.
Arguments:
Arg1: 00000008, EXCEPTION_DOUBLE_FAULT
Arg2: 00000000
Arg3: 00000000
Arg4: 00000000

Debugging Details:
------------------


BUGCHECK_STR: 0x7f_8

TSS: 00000028 -- (.tss 28)
eax=ffdff4dc ebx=f5d299dc ecx=8046f1c0 edx=00000000 esi=853e7a60 edi=00000102
eip=8046a86c esp=f5da9948 ebp=f5d2997c iopl=0 nv up ei pl zr na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246
nt!KiUnlockDispatcherDatabase+0x1c:
8046a86c 59 pop ecx
Resetting default scope

DEFAULT_BUCKET_ID: DRIVER_FAULT

LAST_CONTROL_TRANSFER: from 80450bb3 to 8046a86c

STACK_TEXT:
f5d2997c 80450bb3 00000003 f5d299f8 00000001 nt!KiUnlockDispatcherDatabase+0x1c
f5d29d48 80466389 00000003 0076fe84 00000001 nt!NtWaitForMultipleObjects+0x385
f5d29d48 77f9323e 00000003 0076fe84 00000001 nt!KiSystemService+0xc9
0076fe5c 77e7a059 00000003 0076fe84 00000001 ntdll!ZwWaitForMultipleObjects+0xb
0076feac 77dee9fb 0076fe84 00000001 00000000 KERNEL32!WaitForMultipleObjectsEx+0xea
0076ff08 77deea48 0076fed4 0076ff5c 00000000 USER32!MsgWaitForMultipleObjectsEx+0x153
0076ff24 6d095a7c 00000002 0076ff5c 00000000 USER32!MsgWaitForMultipleObjects+0x1d
0076ff7c 780085bc 00283a90 0062f5ac 0062ffdc IisRTL!SchedulerWorkerThread+0xa7
0076ff90 8042fa31 85400680 0076ff88 ffffffff MSVCRT!_endthreadex+0xc1
00283ab8 ffffffff 00000000 00000000 00000000 nt!KiDeliverApc+0x1a1
00283ab8 ffffffff 00000000 00000000 00000000 0xffffffff
0000096c 00000000 00000000 00000000 00000000 0xffffffff


FOLLOWUP_IP:
nt!KiUnlockDispatcherDatabase+1c
8046a86c 59 pop ecx

SYMBOL_STACK_INDEX: 0

FOLLOWUP_NAME: MachineOwner

SYMBOL_NAME: nt!KiUnlockDispatcherDatabase+1c

MODULE_NAME: nt

IMAGE_NAME: ntkrnlmp.exe

DEBUG_FLR_IMAGE_TIMESTAMP: 3ee650b3

STACK_COMMAND: .tss 28 ; kb

BUCKET_ID: 0x7f_8_nt!KiUnlockDispatcherDatabase+1c

Followup: MachineOwner



4. Проанализируйте результаты работы команды !analyze -v и определите, содержатся ли в них сведения о возникновении двойной ошибки. Если будет обнаружена двойная ошибка, выполните команду .tss 28, чтобы отобразить состояние системы в момент возникновения данной ошибки. В приведенном ниже примере показаны значения регистров процессора в момент возникновения двойного исключения.

0: kd> .tss 28
eax=ffdff4dc ebx=f5d299dc ecx=8046f1c0 edx=00000000 esi=853e7a60 edi=00000102
eip=8046a86c esp=f5da9948 ebp=f5d2997c iopl=0 nv up ei pl zr na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246
nt!KiUnlockDispatcherDatabase+0x1c:
8046a86c 59 pop ecx

В данном примере в регистре ESP содержится значение f5da9948. Как правило, адрес, хранящийся в регистре ESP, незначительно отличается от адреса, хранящегося в регистре EBP. В данном примере в регистре EBP содержится значение f5d2997c.

5. Выполните команду !thread, чтобы отобразить диапазон адресов, выделенный под стек текущего потока. Как правило, двойное исключение возникает в тех случаях, когда адрес, хранящийся в регистре ESP, находится за пределами диапазона адресов, зарезервированных для стека текущего потока. Ниже показан пример выходных данных команды !thread.

0: kd> !thread
THREAD 853e7a60 Cid 904.96c Teb: 7ffdc000 Win32Thread: a21a5c48 RUNNING
Not impersonating
Owning Process 85400680
Wait Start TickCount 578275 Elapsed Ticks: 0
Context Switch Count 38423 LargeStack
UserTime 0:00:02.0031
KernelTime 0:00:06.0640
Start Address KERNEL32!BaseThreadStartThunk (0x77e5b700)
Win32 Start Address MSVCRT!_threadstartex (0x78008532)
Stack Init f5d2a000 Current f5d29c9c Base f5d2a000 Limit f5d27000 Call 0
Priority 8 BasePriority 8 PriorityDecrement 0 DecrementCount 0

ChildEBP RetAddr Args to Child
00000000 8046a86c 00000000 00000000 00000000 nt!_KiTrap08+0x41
f5d2997c 80450bb3 00000003 f5d299f8 00000001 nt!KiUnlockDispatcherDatabase+0x1c
f5d29d48 80466389 00000003 0076fe84 00000001 nt!NtWaitForMultipleObjects+0x385
f5d29d48 77f9323e 00000003 0076fe84 00000001 nt!_KiSystemService+0xc9
0076fe5c 77e7a059 00000003 0076fe84 00000001 ntdll!ZwWaitForMultipleObjects+0xb
0076feac 77dee9fb 0076fe84 00000001 00000000 KERNEL32!WaitForMultipleObjectsEx+0xea
0076ff08 77deea48 0076fed4 0076ff5c 00000000 USER32!MsgWaitForMultipleObjectsEx+0x153
0076ff24 6d095a7c 00000002 0076ff5c 00000000 USER32!MsgWaitForMultipleObjects+0x1d
0076ff7c 780085bc 00283a90 0062f5ac 0062ffdc IisRTL!SchedulerWorkerThread+0xa7
0076ffb4 77e5b382 00283ab8 0062f5ac 0062ffdc MSVCRT!_threadstartex+0x8f
0076ffec 00000000 78008532 00283ab8 00000000 KERNEL32!BaseThreadStart+0x52


В данном примере диапазон адресов, выделенных под стек, отображается в следующей строке.


Stack Init f5d2a000 Current f5d29c9c Base f5d2a000 Limit f5d27000 Call 0
При работе потока значение регистра ESP должно находиться в пределах между базовым (Base, f5d2a000) и минимальным (Limit, f5d27000) адресами стека. Как правило, адрес, хранящийся в регистре регистра ESP, незначительно отличается от текущего адреса (Current, f5d29c9c). Текущий адрес также находится между базовым и минимальным адресами. В данном примере в регистре ESP содержится значение f5da9948. Этот адрес находится далеко за пределами диапазона адресов, выделенных для стека.
Чтобы определить диапазон адресов, выделенных под стек, можно также воспользоваться командой !pcr. Ниже показан пример выходных данных команды !pcr.

0: kd> !pcr
PCR Processor 0 @ffdff000
NtTib.ExceptionList: f5d29d38
NtTib.StackBase: f5d29df0
NtTib.StackLimit: f5d27000
NtTib.SubSystemTib: 00000000
NtTib.Version: 00000000
NtTib.UserPointer: 00000000
NtTib.SelfTib: 7ffdc000

SelfPcr: ffdff000
Prcb: ffdff120
Irql: 00000000
IRR: 00000000
IDR: ffffffff
InterruptMode: 00000000
IDT: 80036400
GDT: 80036000
TSS: 80474850

CurrentThread: 853e7a60
NextThread: 00000000
IdleThread: 80470600

DpcQueue:



Значение NtTib.StackLimit представляет собой младший адрес из диапазона адресов, выделенных под стек. NtTib.StackBase — это последнее значение регистра ESP. Чтобы определить, возникла ли в одном из битов регистра ESP ошибка, сравните текущее значение регистра ESP со значением NtTib.StackBase.

6. Чтобы определить разницу между значениями регистров ESP и EBP, выполните команду .formats esp ^ ebp. Если ошибка не возникала, значение, хранящееся в регистре EBP, будет незначительно отличаться от значения указателя стека, хранящегося в регистре ESP. Как правило, использование этой команды позволяет обнаружить старший бит регистра ESP, содержащий ошибку. Обнаружение данного бита облегчается при отображении результатов в двоичном виде, как показано в следующем примере.


0: kd> .formats esp ^ ebp
Evaluate expression:
Hex: 00080034
Decimal: 524340
Octal: 00002000064
Binary: 00000000 00001000 00000000 00110100
Chars: ...4
Time: Tue Jan 06 17:39:00 1970
Float: low 7.34757e-040 high 0
Double: 2.59058e-318




Если не рассматривать младшие (менее значимые) биты, то значения регистров ESP и EBP отличаются одним битом. Разность этих значений равна 00000000 00001000 00000000 00000000 (в двоичном виде) или 00080000 (в шестнадцатеричном виде).
Это показывает, что в одном из битов регистра ESP возникла ошибка, в результате чего данный регистр содержит неправильное значение, которое приводит к появлению двойного исключения, системной ошибки и аварийному завершению работы системы.

Для получения дополнительных сведений об используемом оборудовании выполните следующие действия.
1. Выполните команду !cpuinfo, чтобы получить сведения о процессоре. Ниже показан пример выходных данных команды !cpuinfo.


0: kd> !cpuinfo
TargetInfo::ReadMsr is not available in the current debug session
CP F/M/S Manufacturer MHz Update Signature Features
0 15,2,9 GenuineIntel 2790>0000000000000000 !cpuinfo
CP F/M/S Manufacturer MHz Update Signature Features
TargetInfo::ReadMsr is not available in the current debug session
0 15,2,9 GenuineIntel 2994>0000001800000000 !pcitree
Bus 0x0 (FDO Ext 85dceed8)
0600 00141166 (d=0, f=0) devext 85dcf348 Bridge/HOST to PCI
0600 00141166 (d=0, f=1) devext 85e110e8 Bridge/HOST to PCI
0600 00141166 (d=0, f=2) devext 85e11ee8 Bridge/HOST to PCI
0100 00c09005 (d=2, f=0) devext 85e11ce8 Mass Storage Controller/SCSI
0100 00c09005 (d=2, f=1) devext 85e11ae8 Mass Storage Controller/SCSI
0300 47521002 (d=3, f=0) devext 85e11788 Display Controller/VGA
0200 16a614e4 (d=4, f=0) devext 85e11428 Network Controller/Ethernet
0880 a0f00e11 (d=5, f=0) devext 85dcdee8 Base System Device/`Other` base system device
0601 02011166 (d=f, f=0) devext 85dcdb88 Bridge/PCI to ISA
0101 02121166 (d=f, f=1) devext 85dcd988 Mass Storage Controller/IDE
0c03 02201166 (d=f, f=2) devext 85dcd628 Serial Bus Controller/USB
0600 02251166 (d=f, f=3) devext 85dcd2c8 Bridge/HOST to PCI
0600 01011166 (d=11, f=0) devext 85e100e8 Bridge/HOST to PCI
0600 01011166 (d=11, f=2) devext 85e10ee8 Bridge/HOST to PCI
Bus 0x2 (FDO Ext 85dcecd8)
0104 00460e11 (d=2, f=0) devext 85e0f9a8 Mass Storage Controller/RAID Bus 0x5 (FDO Ext 85dce9d8)
No devices have been enumerated on this bus.
Total PCI Root busses processed = 3



Для всех перечисленных PCI-устройств первое шестнадцатеричное значение в каждой строке (это значение состоит из 8 цифр и имеет тип DWORD) представляет собой идентификатор производителя и устройства (VenDev ID). Фактически идентификатор производителя определяется последними четырьмя цифрами. Например, первое устройство в приведенном выше списке имеет идентификатор VenDev ID, равный 0x00141166. При этом идентификатор устройства (Device ID) равен 0x0014, а идентификатор производителя (Vendor ID) — 0x1166. Идентификатор производителя для наборов микросхем ServerWorks равен 0x1166. Это означает, что выше приведен результат работы команды !pcitree на компьютере с системной платой, использующей набор микросхем ServerWorks.
Аватара пользователя
V_P_Zadov
Сообщения: 1792
Зарегистрирован: 09 июл 2006, 13:01
Откуда: Техподдержка stream
Контактная информация:

Сообщение V_P_Zadov »

Прежде чем дочитать до конца я бы плюнул и снёс винду :wink:
Самый страшный компьютерный вирус - это User.
Ответить