Bug tracker

Se si riscontrano difetti in ClamAV, controllare se questi sono ancora presenti nell’ultima versione presente nell’archivio SVN .

Se il difetto non è stato ancora riparato, visitare il sito di segnalazione dei difetti .

Attenzione a non fare rapporti su difetti presenti su software derivato da ClamAV e distribuito da terzi (per esempio versioni che noi non manteniamo direttamente) dato che non abbiamo nessun controllo su questi ultimi.
Se pensate di essere in questa situazione, cercate invece di contattare gli sviluppatori della versione specifica.

Ecco alcune informazione che debbono essere incluse in un rapporto difetti (in ordine di importanza):

  • indirizzo e-mail: un indirizzo email funzionante in maniera tale da permettere agli sviluppatori di mettersi in contatto con chi ha aperto la segnalazione in maniera da ottenere informazioni aggiuntive e permettere di avvertire quando il problema ` stato risolto.
  • versione di ClamAV: il risultato del comando:
    clamconf -n
  • i dettagli sul sistema: le specifiche complete del vostro sistema: per esempio il risultato del comando:
    uname -mrsp
  • versione delle librerie: la versione della libreria libc e possibilmente anche della zlib
  • come riprodurre il problema: se il problema è riproducibile solo durante la scansione di un file specifico, allegarlo al messaggio. Non dimenticare di crittografarlo o si produrrebbero dei problemi tra i server di posta nel passaggio fra la spedizione e l’arrivo a destinazione! Per esempio si può operare sul file in questo modo:
    zip -P virus -e file.zip file.ext
    Il contenuto del file sarà ritenuto confidenziale. Alternativamente se il file è troppo grosso per spedirlo via posta elettronica, è possibile depositarlo su di un sito protetto da password e successivamente spedire l’indirizzo del sito e le credenziali necessarie per accedere al file.
  • backtrace di clamscan: se possibile spedire anche il backtrace ottenibile con il debugger del progetto GNU, “gdb”.

Ecco le istruzioni passo passo per l’operazione:

Assumendo che si ottenga una cosa simile a:

$ clamscan --alcune-opzioni alcuni_file
Segmentation fault

La prima cosa da fare è cercare di fare in modo che il kernel emetta un core dump. Con una shell di tipo Bourne (per es. bash):

$ ulimit -c unlimited

Con shell di tipo C (per es. tcsh):

> limit coredumpsize unlimited

Ora si dovrebbe ottenere un messaggio indicante l’emissione del file core:

$ clamscan --alcune-opzioni alcuni_file
Segmentation fault (core dumped)

Guardando all’interno della cartella di lavoro corrente dovrebbe rivelare la presenza di un file di nome core.

Il prossimo passo è di caricare il file core in gdb:

$ gdb -core=core --args clamscan --alcune-opzioni alcuni_file
(gdb)

Ora dovrebbe essere visibile il prompt di gdb. Basta usare il comando bt al prompt per ottenere da gdb la stampa del backtrace completo.
Copiarla e incollarla nel rapporto difetti. Successivamente è possibile uscire da gdb con il comando q.

  • Backtrace di clamd:

Usare ps per ottenere il PID di clamd (il primo numero sulla sinistra):

$ ps -aux (or ps -elf on SysV)
clamav 24897 0.0 1.9 38032 10068 ? S Jan13 0:00 clamd

Collegare gdb al processo in funzione:

$ gdb /usr/sbin/clamd 24897

Rimpiazzare 24897 con il pid di clamd e impostare il path di clamd. Ora si dovrebbe ottenere il prompt di gdb:

(gdb)

Se si vuole che clamd continui a funzionare, fino a un errore di segmentation fault per esempio, basta dare il comando gdb continue, e aspettare l’errore, all’occorrenza del quale gdb tornerà al prompt. bt genererà un backtrace per il thread corrente. Il comando info threads comunicherà quanti threads ci sono. Il comando thread n passerà al thread specificato, dopodich` sarà possibile usare ancora il comando bt per ottenere il backtrace corrispondente al thread in uso. Perciò, ciò che serve fare è:

info threads per ottenere il numero dei thread e i loro numeri id

Per ogni thread fare:

thread id_number
bt

e uscire da gdb con il comand quit . Rispondere y alla domanda sul programma ancora in esecuzione.

  • Strace: opzionalmante, se si pensa possa aiutare, il risultato del comando strace (non descritto in questa sede).

Attenzione: a meno che non sia diversamente specificato, non manteniamo nessun pacchetto o port direttamente. Questi sono forniti da terzi e quindi vi rimandiamo a loro.

Non ci assumiamo alcuna responsabilità per i suddetti!

Notare bene che NON accettiamo rapporti di difetti che riguardano pacchetti che non manteniamo!
Se si è in dubbio, compilare ClamAV dai sorgenti ufficiali.

Facciamo il nostro meglio per mantenere aggiornate le versioni localizzate di questo sito ma, nonostante i nostri sforzi, alle volte ciò non è sempre possibile. È necessario fare riferimento alle pagine in inglese per avere le informazioni più aggiornate.