IT-Expert
  IT-Expert / Веблог / Что делать если получили BSOD? Способ ковыряния в дампе Windows
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2024 год
 за 2023 год
 за 2022 год
 за 2021 год
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 

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

      13:12, 9 ферваля 2006 ( Microsoft Administration  )

      Эпиграф

      Звонок по телефону: 
      - Алл-ё-ё-ё-ё
      - Как это нахер?

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

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


       

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

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

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

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

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

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

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

      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
      ---------

       


      Оставить комментарий
      © Максим Прокопов 2005-2024 О сервере