Об ошибках

Если вы найдёте ошибку в ClamAV, пожалуйста, проверьте её на последнем SVN-коде.

Если она ещё на исправлена, посетите нашу систему слежения за ошибками.

Пожалуйста, не сообщайте о какой-либо ошибке, затрагивающей программу, основанную на ClamAV и распространяемую третьим лицом (т. е. сторонние программы, которые мы не поддерживаем прямо), потому что у нас нет влияния на них.
Вместо этого связывайтесь с их разработчиками.

Вот информация, которую вы должны включить в ваш отчёт об ошибке (в порядке значимости):

  • адрес электронной почты: работающий адрес электронной почты, чтобы разработчики могли связаться с вами для получения дополнительной информации и для извещения, когда проблема будет устранена;
  • версия ClamAV: вывод от:
    clamconf -n
  • системные подробности: полные спецификации вашей системы, т. е. вывод от:
    uname -mrsp
  • версии библиотек: версии вашей libc и, возможно, zlib;
  • как воспроизвести проблему: если ошибка воспроизводима только при сканировании определённого файла, приложите его к сообщению. Не забудьте зашифровать его, или вы можете причинить вред почтовым серверам между вами и нами! Напр.:
    zip -P virus -e file.zip file.ext
    Содержимое файла будет сохраняться конфиденциальным. Альтернативно, если файл слишком большой, чтобы отправить его по почте, вы можете загрузить его на защищённый паролем веб-сайт и отправить нам URL и данные для доступа к нему.
  • трассировка clamscan: если возможно, отправляйте нам трассировку, полученную от gdb, GNU Project Debugger.

Вот пошаговые инструкции, которые проведут вас через процесс:

Предположим, вы получаете что-то вроде:

$ clamscan --некие-параметры некий_файл
Segmentation fault

Первое, что нужно сделать — заставить ядро записать дамп. Для bourne-подобных оболочек (напр., bash):

$ ulimit -c unlimited

Для C-подобных оболочек (напр., tcsh):

> limit coredumpsize unlimited

Теперь вы должны увидеть сообщение core dumped:

$ clamscan --некие-параметры некий_файл
Segmentation fault (core dumped)

Осмотр текущего рабочего каталога должен выявить файл, названный core.

Следующий шаг — загрузить core-файл в gdb:

$ gdb -core=core --args clamscan --некие-параметры некий_файл
(gdb)

Теперь вы должны видеть запрос gdb. Просто используйте команду bt в запросе, чтобы заставить gdb напечатать полную трассировку.
Скопируйте и вставьте её в отчёт об ошибке. Вы можете использовать команду q, чтобы покинуть gdb.

  • трассировка clamd:

Используйте ps, чтобы получить PID clamd (первое число слева):

$ ps -aux (или ps -elf на SysV)
clamav 24897 0.0 1.9 38032 10068 ? S Jan13 0:00 clamd

Присоедините gdb к выполняющемуся процессу:

$ gdb /usr/sbin/clamd 24897

Замените 24897 на pid clamd и поправьте путь clamd. Теперь вы должны получить запрос gdb, как:

(gdb)

Если вы хотите, чтобы clamd продолжал выполняться, например, до тех пор, пока не произойдёт сбой сегментации, введите команду gdb continue и ждите ошибки, в этот момент gdb возвратится к своему запросу.
bt даст трассировку для текущего потока.
Команда info threads скажет вам, сколько есть потоков.
Команла thread n переведёт к указанному потоку, после чего вы снова можете использовать команду bt, чтобы получить его трассировку.
Итак, в основном вам нужно сделать:

info threads, чтобы получить число потоков и номера их идентификаторов.

Для каждого потока сделать:

thread номер_потока
bt

Выйти из gdb с помощью команды quit. Ответить y на вопрос о том, что программа всё ещё выполняется.

  • strace: необязательно, если вы думаете, что это может помочь, вывод strace (здесь не охватывается).

Предупреждение: если не утверждается иначе, мы не поддерживаем никакие сборки и реализации прямо. Эти сборки создаются третьими лицами.

Мы не берём на себя ответственность за них!

Пожалуйста, обратите внимание, что мы НЕ принимаем отчёты об ошибках, которые затрагивают только сборку, которую мы не поддерживаем!
В случае сомнения всегда собирайте ClamAV из исходных текстов.

Мы делаем всё зависящее от нас, чтобы сохранять актуальной локализованную версию этого веб-сайта, однако это не всегда возможно. Пожалуйста, смотрите последнюю информацию в английской версии.