Comprobación de desbordamiento de búfer para Boehm GC

Estoy usando Boehm GC y valgrind.

Pero parece que valgrind no puede detectar el desbordamiento en los búferes GC_malloc'ed.

¿Alguien conoce alguna herramienta que pueda detectar el desbordamiento de búfer para Boehm GC?

¿El programador? Su código debe verificar los límites del búfer antes de escribir en ese búfer en lugar de depender de una herramienta para que lo atrape por usted.
¿Y entonces no habría necesidad de herramientas como Valgrind, Boehm, et al? Bienvenidos al mundo real.
Boehm GC está disponible solo para Linux, ¿verdad? Entonces, cualquier herramienta de Windows no coincide con sus criterios.
Boehm compila para windows...

Respuestas (2)

Nuestra herramienta CheckPointer puede hacer lo que usted quiera.

No dijiste específicamente cómo falló Valgrind, solo que lo hizo. Se sabe que valgrind no puede detectar ciertos tipos de errores de acceso a la memoria. Ciertamente, no puede detectar desbordamientos de búfer para un búfer dentro de una estructura o un búfer asignado en el espacio de la pila local, porque no tiene conocimiento del tamaño de esos búfer. El área alrededor del búfer es, por definición, un espacio de datos válido y, por lo tanto, los accesos son "válidos" desde el punto de vista de valgrind, incluso si está fuera del borde del búfer.

Por el contrario, CheckPointer lee su código fuente C y recopila información sobre los tipos de datos (y, por lo tanto, sus tamaños). Esto le da la información clave necesaria para hacer esa detección. Después de recopilar la información de tipo, instrumenta el código para detectar errores en el acceso a la memoria. Detectará los errores anteriores y una amplia variedad de otros.

CheckPointer actualmente solo está disponible para C.

Este es un producto de mi empresa, así que no lo tome como una recomendación. Simplemente estoy documentando que existe y aparentemente coincide con sus requisitos.

Si define GC_DEBUG antes #include "gc.h", realiza algunas comprobaciones, una vez por colección, comprueba los objetos conocidos para ver si parecen martillados o no. Pienso...

referencias:

https://stackoverflow.com/q/4532825/32453

https://github.com/ivmai/bdwgc/blob/master/tests/smash.c

https://github.com/ivmai/bdwgc "instalaciones de depuración"