バグ報告
ClamAVのバグを発見したら、最新の SVNコード を確認してください。
まだ修正されていなければ バグトラッカー へ登録してください。
ClamAVから配布されていない サードパーティー 製のもの(たとえば移植などは我々は直接関与していません) はレポートしないでください。我々はそれらを変更できません。
代わりに、それらの開発者にコンタクトしてください。
下記は、バグレポートに必要な情報です(重要な順):
- E-mailアドレス: 開発者はあなたに追加の情報を教えて頂くために連絡する事があります。また問題が修正された場合にご連絡します。
- ClamAVのバージョンと設定: 下記コマンドの出力:
clamconf -n
- システムの詳細: あなたのシステムの詳しい情報: たとえば下記コマンドの出力:
uname -mrsp
- ライブラリのバージョン: あなたのlibcおよび、可能であればzlibのバージョン
- 問題の再現方法: もし、特定のファイルをスキャンした時に再現するのであれば、そのファイルを添付してください。ただし、その場合には必ず 暗号化 してください。さもないと、あなたや我々のメールサービスに悪影響を与えるかもしれません!
提供されたファイルの秘密は守ります。もしファイルがメールするには大きすぎる場合には、パスワードで保護されたwebサイトにアップロードして、そのURLとアクセスに必要な情報(ID、パスワードなど)を送ってください。zip -P virus -e file.zip file.ext - clamscanのバックトレース: もし可能なら gdb (GNU Project Debugger)のバックトレースを送ってください。
手順は以下の通りです。
たとえばこのような結果になった時:
$ clamscan --some-options some_file Segmentation faultまず最初にカーネルのコアダンプを取ります。
bashのようなbourneシェルであれば下記のようにします。$ ulimit -c unlimitedtcshのようなCシェルであれば下記のようにします。
> limit coredumpsize unlimitedすると、 core dumped というメッセージが出ます:
$ clamscan --some-options some_file Segmentation fault (core dumped)すると、カレントディレクトリに core というファイルができているはずです。
次に、コアファイルをgdbに読み込みます:
$ gdb -core=core --args clamscan --some-options some_file (gdb)gdbのプロンプトが出てきますから bt コマンドを実行しバックトレースを表示します。
これをバグレポートにコピー&ペーストしてください。
q コマンドでgdbを終了します。 - clamdのバックトレース:
ps コマンドを使ってclamdのプロセスID(左側の数字)を調べます:
$ ps -aux (or ps -elf on SysV)
clamav 24897 0.0 1.9 38032 10068 ? S Jan13 0:00 clamd
gdbを実行中のプロセスにアタッチします:
$ gdb /usr/sbin/clamd 24897
プロセスIDの24897の部分と、clamdへのパスは適宜置き換えてください。
するとgdbのプロンプトが出ます:
(gdb)
セグメンテーションフォルトが発生するまで実行を継続するなら continue コマンドを実行します。そしてエラーが発生するまで待ち、エラーが発生するとプロンプトに戻ります。
bt コマンドで現在のスレッドのバックトレースを表示します。
info threads でいくつのスレッドがあるかがわかります。
thread n で指定のスレッドに変更し、 bt コマンドでそのスレッドのバックトレースを取得します。
基本的な手順は以下の通りです:
info threads コマンドでスレッドの数と、それらのidを調べます
それぞれのスレッドで以下のコマンドを実行します:
thread id_number
bt
quit コマンドでgdbを終了します。プログラムが実行中なら質問に y と答えます。
- Strace: (オプション)もしstraceの結果が有用であると考えられるのなら、straceの結果を添付してください。
※我々は日本語翻訳版を最新に保つよう最大限の努力をしています。しかし、必ずしも常に最新であるとは限りません。英語版のページで最新の情報を確認してください。
