Pregunta

¿Hay falsos positivos conocidos con Valgrind? Me sale un 'salto condicional o movimiento depende del valor (s) sin inicializar' con la función fmemopen, escrito en C y compilar con GCC. Puedo estar seguro de que es real?

EDIT: ¿Hay problemas que no están en los archivos de supresión sabe? ¿Hay algunas cosas que uno puede hacer en un programa, que no son realmente errores, pero Valgrind dirá que son? Si hay problemas conocidos, una lista no estaría mal.

¿Fue útil?

Solución

Sí, hay falsos positivos con Valgrind, es por eso que tiene archivos de supresión de determinadas versiones de glibc y gcc, por ejemplo. Los falsos positivos pueden surgir si está utilizando valgrind más viejos con los nuevos gcc y glibc, es decir, 3,3 valgrind con glibc 2.9.

Una vez dicho esto, usted todavía tiene que mirar en cuestión y averiguar si es realmente un falso positivo (si es que resulta ser el caso, se puede escribir una supresión de su bolsillo) o se trata de un fallo real en su programa.

No hay manera rápida y fácil de decir lo que está pasando aquí, pero en este caso yo sospecharía que está pasando valor no inicializado a partir del código de código de la biblioteca. Trate Valgrind opción --track-origins=yes. Se mostrará cuando el valor no inicializado vino. Si es su código, probablemente usted debe inicialice. Si está dentro de la biblioteca, que podría ser el falso positivo o, todavía, malos valores de los argumentos de llamada biblioteca podrían ser la causa de que, a fin de comprobar los.

Otros consejos

Valgrind viene con cierta supresión de error por defecto, pero son de ninguna manera que cubren todas las bibliotecas.

  

Las herramientas de comprobación de errores detectan numerosos problemas en las bibliotecas de base, tales como la biblioteca de C de GNU, y las bibliotecas de cliente de X11, que vienen pre-instalados en su sistema GNU / Linux. No se puede arreglar fácilmente estos, pero no desea ver estos errores (y sí, hay muchos!) Así que Valgrind lee una lista de errores para suprimir en el arranque. Un archivo de supresión por defecto es creado por el script ./configure cuando el sistema está construido.

Usted puede crear su propia que sabe que son irrelevantes para su código.

No era lo Debian SSL motivado por la fijación de algunos falsos positivos con Valgrind?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top