понедельник, 24 мая 2010 г.

Периодически перезагружается компьютер с BSOD

Ну вот у меня наконец дошли руки разобраться с небольшим косячком моего компа.
Периодически ребутилась Win7 x64 с BSOD.
Работаю в какомнить приложении или сайт смотрю, бах, виснет, BSOD и в ребут. Ребуты без переиодичности, раз в пару дней, а могут быть и парочку за один вечер. В Журнале есть записи об ошибке Kernel-Power 41
А так же 4 записи Kernel-Processor-Power 26 под каждое ядро проца, типа
Процессор 3 в группе 0 имеет следующие показатели: состояний бездействия: 1,
состояний производительности: 2,
состояний снижения питания: 0

проц core 2 quad q9300
мать p5ql pro p43
8гб памяти (4 планки по 2 гига Geil black dragon pc2-8500 5-5-5-15, gb24gb8500c5dc)
БП 700W (с другим БП на 500W такая же ботва )
Стоит ИБП, недавно аккумы поменял.

Стоит КИС2010, винда обновляется.
Сплошной лиценз везде и во всем.

Раньше как то просто руки не доходили, а щас вот решил понять кто это мне гадит)

Для начала вырубил галку  Выполнять автоматическую перезагрузку в Дополнительные параметры системы -> Дополнительно -> Загрузка и восстановление -> Параметры.
По поводу BSOD, то они различаются, вот примеры последних:

1. STOP 0x0000001E (0xFFFFFFFFC0000005, 0xFFFFF800031D16D8, 0x0000000000000000, 0xFFFFFFFFFFFFFFFF)

2.  SYSTEM_SERVICE_EXCEPTION
STOP 0x0000003B (0x00000000C000001D, 0xFFFFF800031D1501, 0xFFFFF8800A7BDC50, 0x0000000000000000)

3. IRQL_SERVICE_EXCEPTION
STOP 0x0000003B (0x0000000000000000, 0x0000000000000002, 0x0000000000000000, 0xFFFFF800033F3513)

Решил прогнать парочку тестов с помощью штатного виндового memtest... тишина, всё чисто, ни одной ошибки...
Далее на местном форуме эксперты по железу предложили прогнать  парочку тестов в OCCT Perestroika, получил следующие результаты
Первый тест проца завершился неудачно, второй отработал положенный час.
Тесты памяти видео и БП так же отработали по часу и штатно завершились.
На скринах БП написано 13 ошибок, чтобы это могло значить?
Эксперты подозревают оперативку, предлагают вынимать по одной планке памяти и делать часовые прогоны, чтобы попробовать исключить проблемный модуль.

Решил пока повременить и проанализировать минидампы...
Итак, сунулся в инет посмотреть а чем же эти самые минидампы анализировать, оказывается есть утилита Debugging Tools for Windows. В системе у меня ее не оказалось, пришлось слить 15 мб с сайта Майкрософт.

Итак, нужно запустить программу WinDbg, потом выбрать Open - Crash dump... (Ctrl+D), затем
выбрать папку с файлами минидампов, обычно это C:\Windows\Minidump и выбрать любой файл *.dmp
Итак, открыли файл дампа и видим записи типа:

Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path. *
* Use .symfix to have the debugger choose a symbol path. *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************

Не беда, это легко поправимо. Идем сюда и качаем Windows Symbol Package для нашей версии Windows. Я скачал для себя Windows 7 RTM x64 retail symbols, all languages весом 286 мб. Многовато, но куда деватся...
Итак, смвольный пакет скачан, при установке нас попросят указать место установки, я укзал C:\Symbols. Ах да, забыл сказать, эта папка будет весить 1358 мб))
Есть и альтернативный способ, это не качать символьный пакет, а воспользоваться символьным сервером Майкрософт:

To use the Microsoft Symbol Server

  1. Make sure you have installed the latest version of Debugging Tools for Windows.
  2. Start a debugging session.
  3. Decide where to store the downloaded symbols (the "downstream store"). This can be a local drive or a UNC path.
  4. Set the debugger symbol path as follows, substituting your downstream store path for DownstreamStore. 
SRV*DownstreamStore*http://msdl.microsoft.com/download/symbols

For example, to download symbols to c:\websymbols, you would add the following to your symbol path:

SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols

Итак, символьный пакет, наконец установлен, теперь нужно задать путь откуда дебаггер будет брать символьный пакет.
Сам дебагер нам подсказывает три путя как это можно сделать:
*********************************************************************
* Symbols can not be loaded because symbol path is not initialized. *
* *
* The Symbol Path can be set by: *
* using the _NT_SYMBOL_PATH environment variable. *
* using the -y argument when starting the debugger. *
* using .sympath and .sympath+ *
*********************************************************************
Более подробно можно прочитать на сайте Майкрософт в статье kb311503
Я сделал как написано там для случая WinDbg:

To use the Symbol Server Web site from within WinDbg, follow these steps:


  1. Start the Windows Debugger (WinDbg.exe).
  2. On the File menu, click Symbol File Path.
  3. In the Symbol path box, type the following command:
SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols

where your local folder for symbols is the folder in which you copy your local symbol cache. The debug symbols are downloaded to this location.
Note You can point to any local path or share that your computer can reach; it does not have to be a location on the computer's hard disk.
 
В моем случае строка имела вид:
SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols

Теперь дампы открывались корректно. По поводу методики анализа минидампов нашел русскую статью kb315263
Так же для анализа дампов может помочь скрипт kdfe.cmd
который можно взять с странички автора

Вот некоторые мои дампы (вывод через kdfe.cmd, через windbg просто больше инфы, решил не загромождать):

Analyzing "R:\dumps\042210-22854-01.dmp", please wait... Done.
Crash date:         Thu Apr 22 22:41:35.806 2010 (GMT+4)
Stop error code:    0x4E_99
Process name:       firefox.exe
Probably caused by: memory_corruption ( ntMiBadShareCount+4c )

Analyzing "R:\dumps\042910-35693-01.dmp", please wait... Done.
Crash date:         Thu Apr 29 06:25:50.597 2010 (GMT+4)
Stop error code:    0xA
Process name:       avp.exe
Probably caused by: hardware ( ntKiRetireDpcList+223 )

Analyzing "R:\dumps\043010-35100-01.dmp", please wait... Done.
Crash date:         Fri Apr 30 15:24:54.663 2010 (GMT+4)
Stop error code:    0x19_3
Process name:       avp.exe
Probably caused by: Pool_Corruption ( ntExFreePool+75b )

Analyzing "R:\dumps\050210-31231-01.dmp", please wait... Done.
Crash date:         Sun May  2 16:29:13.924 2010 (GMT+4)
Stop error code:    0x50
Process name:       ehrecvr.exe
Probably caused by: ntkrnlmp.exe ( nt:FNODOBFM::`string'+40ecb )

Не исключено что проблемы с оперативкой, но так же может быть и проблемы работы 32битных приложений в 64битной Windows7...
Пока что в поиске решения...

Несколькими часами позднее....
Пожонглировал планками памяти, в общем и целом ничего не менялось. Решил покрутить BIOS, и получил определенный результат. В BIOS у меня все настройки стояли по умолчанию (auto).
Решил слегка подкрутить частоту памяти как и советовали на форуме. В разделе Ai Tweaker нашел пункт DRAM Frequency, выставил DDR2-1066 MHz (согласно макс частоте памяти), но ошибки как были так и остались. В итоге подобрал рабочие параметры, которыми оказались
FSB Strap to North Bridge = 400 MHz
DRAM Frequency = DDR2-999 MHz
Прогнал часовые Linpack тесты из раздела Блок Питания, как самый нагрузочный.
Представляю результаты прог CPU-Z и OCCT

Буду надеется, что BSODы вылечены... )))
Поживем увидим.

Благодарности автор выражает АлS (aka Alexey Samsonov) и kosmonavt с news-сервера Крафт-С, ветка hardware

Комментариев нет: