четверг, 23 октября 2014 г.

Анализ crashdump в OS Solaris. Ищем виновника причины. #1

Причина поиска

Итак, у нас внезапно перезагрузился сервер. После подъёма, вы посмотрели в /var/crash/ и увидели там свежий vmdump.0.
Поздравляю! Вы стали свидетелем краха ядра ОС Solaris и теперь пытаетесь выяснить причину, хотя бы косвенную, этого падения.
Для начала нам надо распаковать crashdump в /var/crash/vmdump.0 в стандартную пару для анализа unix.0 и vmcore.0, позволю себе напомнить, что unix.0 — это дамп ядра системы, а vmcore.0 — это дамп памяти и в анализе причины падения эти файлы участвуют совместно.
/usr/bin/savecore -vf /var/crash/vmdump.0
Загружаем пару дампов, системы и памяти, в отладчик и пытаемся посмотреть причину падения:
/usr/bin/mdb -k /var/crash/{unix,vmcore}.0
Теперь просто даем команду в отладчике:
::status
и в большинстве случаев – этого достаточно, ровно как и
file /var/crash/{unix,vmcore}.0
чтобы понять причину падения. Однако, в этот раз вам не повезло и вы видите, что падение вызвано непонятной записью:
panic message: BAD TRAP: type=31 rp=2a102fb0db0 addr=6fffedd6b4b mmu_fsr=0
dump content: kernel pages only