Bug tracker
ClamAVのバグを発見したら、最新の gitコード を確認してください。
まだ修正されていなければ バグトラッカー へ登録してください。
ClamAVから配布されていない サードパーティー 製のもの(たとえば移植などは我々は直接関与していません) はレポートしないでください。我々はそれらを変更できません。
代わりに、それらの開発者にコンタクトしてください。
下記は、バグレポートに必要な情報です(重要な順):
clamconf -nuname -mrspzip -P virus -e file.zip file.ext- clamscanのバックトレース: もし可能なら gdb (GNU Project Debugger)のバックトレースを送ってください。
たとえばこのような結果になった時:
$ clamscan --some-options some_file
Segmentation fault
まず最初にカーネルのコアダンプを取ります。
bashのようなbourneシェルであれば下記のようにします。
$ ulimit -c unlimited
tcshのような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 clamdgdbを実行中のプロセスにアタッチします:
$ gdb /usr/sbin/clamd 24897プロセスIDの24897の部分と、clamdへのパスは適宜置き換えてください。
するとgdbのプロンプトが出ます:(gdb)セグメンテーションフォルトが発生するまで実行を継続するなら continue コマンドを実行します。そしてエラーが発生するまで待ち、エラーが発生するとプロンプトに戻ります。
bt コマンドで現在のスレッドのバックトレースを表示します。
info threads でいくつのスレッドがあるかがわかります。
thread n で指定のスレッドに変更し、 bt コマンドでそのスレッドのバックトレースを取得します。基本的な手順は以下の通りです:
info threads コマンドでスレッドの数と、それらのidを調べます
それぞれのスレッドで以下のコマンドを実行します:
thread id_number btquit コマンドでgdbを終了します。プログラムが実行中なら質問に y と答えます。
- Strace: (オプション)もしstraceの結果が有用であると考えられるのなら、straceの結果を添付してください。
※我々は日本語翻訳版を最新に保つよう最大限の努力をしています。しかし、必ずしも常に最新であるとは限りません。英語版のページで最新の情報を確認してください。

