dtrace: failed to compile script は KERNCONF が原因でも起きる2020年01月10日 14時07分14秒

FreeBSD の CURRENT でカーネルに入れた変更のパフォーマンスを計ってみようと思ったが、dtrace がうまく動かない時があって困っていた。
# dtrace -s time-spent.d
dtrace: failed to compile script time-spent.d: "/usr/lib/dtrace/mbuf.d", line 11
4: failed to copy type of 'm_data': Type information is in parent and unavailable
/usr/lib/dtrace/mbuf.d を見ても何が悪いのか全然判らない。

二、三週間様子を見て気が付いたのが、make installkernel の直後にエラーが出たり消えたりすること。dtrace がコンパイルしていると言うのだから、カーネルのソースコードか生成物を利用していると考えられる。再起動無しで、dtrace のコンパイルの結果が変わる様だ。

その後疑ったのが、KERNCONF。CURRENT の GENERIC はデバッグオプションがいっぱいなので、ほとんどの場合は GENERIC-NODEBUG カーネルを使っている。更に一日に、十数回もカーネルをリンクすることもあるので、特に作業用には更に GENERIC-NODEBUG ファイルで沢山のデバイスを無効にしていた。

作業用カーネルで作ったときは、極小構成だったが、テスト用に別途利用しているカーネルは素の GENERIC-NODEBUG だった。テスト用にも極小構成の KERNCONF を置いた後は dtrace が問題なくコンパイル出来ている。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/01/10/9200388/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。