tips
- How to get a kernel crashdump
FreeBSD CURRENTを使っている場合や、
デフォルトでは有効になっていない機能を使っている場合、 さまざまなアプリケーションのカーネルモジュールを組み合わせて使っている、 新しいデバイスとデバイスドライバを使っている、 実験的な機能を試用している場合など、 カーネルがパニックすることがあります。 カーネルがパニックした場合、
パニック時のデータがあると、 何が原因でパニックが発生したのか把握しやすくなります。問題の修正、 または問題を回避するために、 こうしたデータが重要になります。 パニック発生時にクラッシュダンプを取得するようにするには、
/etc/ rc. confに次のような設定を追加しておきます。コアデータがスワップ領域に書き出され、 次のシステム起動時に回収されて/var/ crash/ディレクトリ以下にクラッシュダンプデータやクラッシュ時の状況のサマリデータが出力されるようになります。 dumpdev="AUTO" dumpdir="/var/
crash" crashinfo_ enable="YES" デバッグをかけることもできますし、
どこで問題が起きたか把握するだけであればcore. txt. 0といったテキストファイルの内容を読むだけで多くのことがわかります。このオプションはCURRENTでは最初から有効になっていると思います。RELEASEに対しては無効になっているのではないかと思いますので、 使用する場合には明示的に書くようにしてください。 % ls -l /var/
crash/ total 2713196 -rw-r--r-- 1 root wheel 2 Nov 9 13:42 bounds -rw------- 1 root wheel 141506 Aug 22 20:46 core. txt. 0 -rw------- 1 root wheel 219502 Nov 9 13:22 core. txt. 1 -rw------- 1 root wheel 221065 Nov 9 13:43 core. txt. 2 -rw------- 1 root wheel 605 Aug 22 20:46 info. 0 -rw------- 1 root wheel 445 Nov 9 13:21 info. 1 -rw------- 1 root wheel 444 Nov 9 13:42 info. 2 -rw-r--r-- 1 root wheel 5 Sep 26 22:04 minfree -rw------- 1 root wheel 517865472 Aug 22 20:46 vmcore. 0 -rw------- 1 root wheel 1197342720 Nov 9 13:21 vmcore. 1 -rw------- 1 root wheel 1200979968 Nov 9 13:42 vmcore. 2 % たとえば次の出力であれば、
VirtualBoxのvboxnetadpカーネルモジュールでパニックが発生していることがわかります (このケースではVimage関連でVBoxのモジュールがパニックを引き起こしています)。 % less /var/
crash/ core. txt. 2 ... #10 0xffffffff80b6baa3 in calltrap () at /usr/ src/ sys/ amd64/ amd64/ exception. S:228 #11 0xffffffff80924d25 in ifindex_ alloc_ locked (idxp=0xffffff846475092e) at /usr/ src/ sys/ net/ if. c:276 #12 0xffffffff80929b81 in if_ alloc (type=6 '\006') at /usr/ src/ sys/ net/ if. c:432 #13 0xffffffff82ba1124 in vboxNetAdpOsCreate () from /boot/ modules/ vboxnetadp. ko #14 0xffffffff82ba172f in vboxNetAdpCreate () from /boot/ modules/ vboxnetadp. ko #15 0xffffffff82ba1515 in VBoxNetAdpFreeBSDCtrlioctl () from /boot/ modules/ vboxnetadp. ko #16 0x0000000000000000 in ?? () #17 0x00000000c0207601 in ?? () #18 0x0000000000000000 in ?? () #19 0xffffff8464750a60 in ?? () #20 0xffffffff807872fb in devfs_ ioctl_ f (fp=0xffffff8464750990, com=18446743542818998672, data=Variable "data" is not available. ) ... % メーリングリストやフォーラムに問題を報告する時にはこうしたデータを提供すると、
問題の解決が早くなる可能性があります。 スワップ領域にZFSを使用している場合には注意が必要です。クラッシュダンプはZFSのスワップ領域に対応していませんので、
クラッシュダンプを書き出すことができません。クラッシュダンプを取得するために通常のパーティション領域をスワップとして指定するか、 dumpdev=""で書きださせたいパーティションを指定する必要があります (指定には十分注意してください)。