プログラムがでオペレーティングシステムのバグを引き起こすと、システムはパニックになりクラッシュします。クラッシュはユーザには不親切であるように感じられるかもしれませんが、突然の停止は実際には、システムとそのデータがそれ以上損傷するのを防止します。
オペレーティングシステムが停止するのに伴い、パニックルーチンは、使用中のメモリーの内容をダンプデバイスにコピーすることによって、パニックルーチンの呼び出し元である CPU の現在の状態に関する重要情報を記録します。
通常は一次スワップデバイスがデフォルトのダンプデバイスであるため、一次スワップデバイスは、メモリー全体のイメージを収容できるだけの大きさがなければなりません。メモリーイメージが保存されると、システムはリブートしようとします。
システムが正常にリブートしない場合は、次の可能性を検討してください。
メモリー障害やディスククラッシュなどの、致命的なハードウェア障害
デバイスドライバのバグなどの、カーネル構成の重大障害
maxusers の値が大きすぎるなどの、カーネルチューニングの重大エラー
オペレーティングシステムファイルの損傷を含む、データ損傷
fsck(1M) が自らの照会に対する回答を求めている場合など、人間の介入が必要な場合
システムクラッシュが発生した理由を特定するために、次のいずれかの操作を実行できます。
/var/adm/message* ログファイルを調べます。
クラッシュ時にコンソールに表示された情報を紙に記録します (クラッシュ時にコンソールの前に座っていた場合)。
savecore(1M) プログラムを使用します。
上記の方法の中では、savecore プログラムを使用すると最も多くの情報を得られます。savecore コマンドは、パニックルーチンによって生成されたシステムクラッシュのダンプイメージを、ダンプデバイスからファイルシステムに転送します。このイメージを adb(1) などのデバッガを使用して分析できます。
savecore を正しく設定し結果を解釈するのは、場合によっては難しい作業です。システムパニックのデバッグについて詳細は、Chris Drake と Kimberley Brown 著『Panic! UNIX Sytem Crash Dump Analysis』(ISBN: 0-13-149386-8) を参照してください。