Domanda

Ci sono falsi positivi noti con Valgrind? Ho un 'Salto condizionato o mossa dipende da valore Non inizializzato (s)' con la funzione fmemopen, scrivere in C e la compilazione con GCC. Posso essere sicuro che sia vero?

EDIT: Ci sono problemi noti che non sono nei file di soppressione? Ci sono alcune cose che si possono fare in un programma, che non sono realmente errori ma Valgrind diranno che sono? Se non ci sono problemi noti, un elenco sarebbe bello.

È stato utile?

Soluzione

Si, ci sono falsi positivi con Valgrind, è per questo che ha i file di soppressione per particolari versioni glibc e gcc, per esempio. I falsi positivi possono insorgere se si utilizza più anziani valgrind con le nuove 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 in il vostro programma.

Non c'è un modo semplice e veloce per dire che cosa sta succedendo qui, ma in questo caso avrei il sospetto che si sta passando valore non inizializzato dal codice al codice della libreria. Prova Valgrind opzione --track-origins=yes. Mostrerà dove il valore non inizializzato è venuto da. Se è il vostro codice, probabilmente si dovrebbe inizializzato. Se è all'interno della libreria, potrebbe essere il falso positivo o, ancora, i valori negativi di argomenti chiamata di libreria potrebbe essere la causa di esso, in modo da controllare quelli.

Altri suggerimenti

Valgrind è dotato di una certa soppressione errore predefinito, ma sono in alcun modo che coprono tutte le librerie.

  

Gli strumenti di controllo degli errori rilevare numerosi problemi nelle librerie di base, come ad esempio la libreria GNU C, e le librerie client X11, che vengono pre-installato sul sistema GNU / Linux. Non si può facilmente risolvere questi, ma non si vuole vedere questi errori (e sì, ci sono molti!) Così Valgrind legge un elenco di errori di sopprimere all'avvio. Un file di soppressione di default viene creato dallo script ./configure quando il sistema è costruito.

È possibile creare il proprio che si sa sono irrilevanti al codice.

non era la cosa Debian SSL motivato fissando alcuni falsi positivi con Valgrind?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top