Что делать если получили BSOD? Способ ковыряния в дампе Win

Документация, HOWTO для ОС Windows
Post Reply
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2794
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

Что делать если получили BSOD? Способ ковыряния в дампе Win

Post by Raven » 17 Jun 2010, 12:05

Ну вот случилось у нас, к примеру, несчастье. Нехороший windows вывалился в BSOD - blue screen of death. Что? Почему? Как это? Самый трезывый из этих вопрос: из-за чего?

Видим, к примеру, строку PAGE_FAULT_IN_NONPAGED_AREA, что нам с ней дальше делать? А какой это драйвер глюканул? А может и не драйвер вовсе?

Image

Мелкософт для анализа подобных ситуаций предоставляет инструмент для отладки: WinDbg, который у них и доступен для бесплатного скачивания около 13,8Мб. Тут надо оговориться, что для полного счастья этому дебаггеру не будет хватать библиотек виндовых symbols (который на самом-то деле и весит примерно 130Мб).

По умолчанию нехороший виндовс делает два дампа: большой, и маленький. Большой дамп содержит всю используемую в момент ошибки память и находится в корне системы, это MEMORY.DMP, маленький дамп тоже подходит для анализа, и обнаружить все выпущенные системой минидампы можно в c:\windows\minidump\, типичное имя файла - Mini011106-14.dmp, дата, номер.

Открываем в windbg из меню как показано на скриншоте.
Загружается дамп и выводит почти пригодную информацию для осознания случившегося.

Рекомендую скачать символьную базу для x86 XP, 2003 архитектур и подключить в бебаггере указав правильные пути.

В командной строке дебаггера запускаем команду !analyze -v и получаем еще более детальный отчет, который я и привожу ниже.

В частности из анализа этого дампа можно сделать вывод о том, что ошибка возникла на системном уровне, вследствие переполнения стека. Виновником является что-то низкоуровневое. Способ побороть - писать в Microsoft и ждать хотфикс.

Code: Select all

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

Microsoft (R) Windows Debugger  Version 6.6.0003.5
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\MEMORY.DMP]
Kernel Summary Dump File: Only kernel address space is available

Symbol search path is: C:\WINDOWS\Symbols
Executable search path is:
Windows Server 2003 Kernel Version 3790 (Service Pack 1) MP (2 procs) Free x86 compatible
Product: Server, suite: Enterprise TerminalServer
Built by: 3790.srv03_sp1_rtm.050324-1447
Kernel base = 0x80800000 PsLoadedModuleList = 0x808af988
Debug session time: Mon Feb  6 18:04:31.040 2006 (GMT+2)
System Uptime: 0 days 7:52:05.481
Loading Kernel Symbols
..................................................................................................................
Loading User Symbols
PEB is paged out (Peb.Ldr = 7ffdc00c).  Type ".hh dbgerr001" for details
Loading unloaded module list
.........
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 50, {fdffa9f8, 0, 8089b522, 0}

Probably caused by : ntkrnlmp.exe ( nt!ExFreePoolWithTag+28b )

Followup: MachineOwner
---------

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

PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced.  This cannot be protected by try-except,
it must be protected by a Probe.  Typically the address is just plain bad or it
is pointing at freed memory.
Arguments:
Arg1: fdffa9f8, memory referenced.
Arg2: 00000000, value 0 = read operation, 1 = write operation.
Arg3: 8089b522, If non-zero, the instruction address which referenced the bad memory
address.
Arg4: 00000000, (reserved)

Debugging Details:
------------------
READ_ADDRESS:  fdffa9f8 Nonpaged pool expansion


FAULTING_IP:
nt!ExFreePoolWithTag+28b
8089b522 668b4602         mov     ax,[esi+0x2]

MM_INTERNAL_CODE:  0

DEFAULT_BUCKET_ID:  INTEL_CPU_MICROCODE_ZERO

BUGCHECK_STR:  0x50

CURRENT_IRQL:  1

LAST_CONTROL_TRANSFER:  from 808689ee to 8087b6be

STACK_TEXT:
abd37abc 808689ee 00000050 fdffa9f8 00000000 nt!KeBugCheckEx+0x1b
abd37b0c 80837d0a 00000000 fdffa9f8 00000000 nt!MmAccessFault+0x813
abd37b0c 8089b522 00000000 fdffa9f8 00000000 nt!KiTrap0E+0xdc
abd37be4 8093aeba fdffa9fe 00000000 e3b6d188 nt!ExFreePoolWithTag+0x28b
abd37c00 8091a265 e3b6d188 00000d80 abd37c3c nt!CmpCleanUpKcbValueCache+0x51
abd37c10 8097b9ca e3b6d188 8ad3e801 00000000 nt!CmpCleanUpKcbCacheWithLock+0x15
abd37c3c 8097ba85 005e8368 8ad3e801 e3dc24b0 nt!CmpCleanUpKCBCacheTable+0x110
abd37c68 8097a4a1 e25e8368 00000000 8ad3e801 nt!CmpSearchForOpenSubKeys+0x36
abd37ca0 809765d0 e3dc29f8 00000000 01000003 nt!CmUnloadKey+0xb2
abd37d48 80977be6 0185f764 00000000 abd37d64 nt!NtUnloadKey2+0x212
abd37d58 80834d3f 0185f764 0185f77c 7c82ed54 nt!NtUnloadKey+0xf
abd37d58 7c82ed54 0185f764 0185f77c 7c82ed54 nt!KiFastCallEntry+0xfc
WARNING: Frame IP not in any known module. Following frames may be wrong.
0185f77c 00000000 00000000 00000000 00000000 0x7c82ed54
STACK_COMMAND:  .bugcheck ; kb

FOLLOWUP_IP:
nt!ExFreePoolWithTag+28b
8089b522 668b4602         mov     ax,[esi+0x2]

FAULTING_SOURCE_CODE:
SYMBOL_STACK_INDEX:  3

FOLLOWUP_NAME:  MachineOwner

SYMBOL_NAME:  nt!ExFreePoolWithTag+28b

MODULE_NAME:  nt

IMAGE_NAME:  ntkrnlmp.exe

DEBUG_FLR_IMAGE_TIMESTAMP:  42435e60

FAILURE_BUCKET_ID:  0x50_nt!ExFreePoolWithTag+28b

BUCKET_ID:  0x50_nt!ExFreePoolWithTag+28b

Followup: MachineOwner
---------
Источник: http://it-expert.com.ua
Я не злопамятный, я просто часто ковыряю логи
User avatar
Infernal Flame
Злой Модер
Posts: 1796
Joined: 03 Mar 2010, 11:25
ОС: Centos 7
Contact:

Re: Что делать если получили BSOD? Способ ковыряния в дампе

Post by Infernal Flame » 17 Jun 2010, 14:36

Raven
будут сцылки на сабжевый софт - давайте... могу выкачать... пока канал более-менее не напряжен :)
Image
Image
Work: Centos 7 х 'all Servers'
Post Reply

Return to “Документация MS Windows”