Pregunta

Al ejecutar mi programa consigo los siguientes errores de la Boehm GC (con GC_DEBUG definido):

GC_check_heap_block: found smashed heap objects:
0x8ef1008 in or near object at 0x8ef1010(<smashed>, appr. sz = 29)
0x8ef1188 in or near object at 0x8ef1190(<smashed>, appr. sz = 29)
...

Lo anterior continúa sobre 20 veces.

Curiosamente, no puedo encontrar nada malo con el programa, se hace lo que se supone que es, y no se desplome.

Me puede compilar mi programa de desactivación de la GC. Entonces puedo correr valgrind con ella, pero curiosamente, valgrind no encuentra ningún problema!

Podría ser un problema dentro de Boehm GC - debería ignorarlo

¿Alguien tiene alguna idea de cómo depurar efectivamente esto?

O, ¿alguien puede explicar lo que precisamente el mensaje anterior medios

¿Fue útil?

Solución

Para responder a mi propia pregunta más de 3 meses después ...

He intentado registrar cada puntero en un archivo, y comparando con los punteros que dieron el aviso rota. Sin embargo, eso no fue así en cualquier lugar de plomo, los punteros sospechosos venían de diversas asignaciones todo el código base (sin un lugar particular que fue tal vez roto).

Mientras tanto, sin GC, valgrind no informó de ningún error, pero por supuesto eso no significa que no sea todavía existen posibles errores.

Sin embargo, pensé que había que probar si esta versión particular de la GC tiene un error sutil tal vez. Yo estaba usando la última versión estable 7.1 GC. He actualizado a 7.2alpha4, y el problema se fue!

Si alguien se queda en todo esto, espero que esto le ayuda.

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