Sì, ci sono falsi positivi con Valgrind, ecco perché ha i file di soppressione per particolari versioni di glibc e gcc, per esempio. I falsi positivi possono sorgere se si utilizza valgrind precedente con i nuovi gcc e glibc, vale a dire valgrind 3.3 con glibc 2.9.
Detto questo, si devono ancora esaminare questione e scoprire se è davvero un falso positivo (se questo risulta essere il caso, è possibile scrivere una soppressione per voi stessi) o è un vero e proprio bug nel tuo programma.
Non c'è un modo semplice e veloce per dire cosa sta succedendo qui, ma in questo caso sospetto che stiate passando il valore non inizializzato dal vostro codice al codice della libreria. Prova l'opzione Valgrind --track-origins=yes
. Mostrerà da dove viene il valore non inizializzato. Se è il tuo codice, probabilmente dovresti inizializzarlo. Se è all'interno della libreria, potrebbe essere il falso positivo o, ancora, i cattivi valori degli argomenti della chiamata alla libreria potrebbero causarne la causa, quindi controllali.
fonte
2009-04-28 07:29:46
Come posso scoprire se si tratta di un falso positivo? –
Ho aggiunto alcuni suggerimenti alla mia risposta, speriamo che aiuti. –
Direi che supponiamo che tutti i problemi segnalati siano in realtà problemi finché non si è verificato senza dubbio che lo è. È facile liquidare qualcosa come un falso positivo o un bug in un'altra libreria o qualsiasi altra cosa quando il problema è, in effetti, un vero problema nel proprio codice. Ricorda: selezionare probabilmente non è rotto ;-) Certo, ci saranno casi in cui è davvero un falso positivo ... – Dan