Question

Lors de l'exécution de mon programme, je reçois les erreurs suivantes de la GC Boehm (avec GC_DEBUG défini):

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)
...

continue plus d'environ 20 fois.

Bizarrement, je ne peux pas trouver quelque chose de mal avec le programme, il fait ce qu'il est censé, et ne tombe pas en panne.

Je peux compiler mon programme de désactiver le GC. Ensuite, je peux courir avec valgrind, mais assez curieusement, valgrind ne trouve pas de problème!

pourrait-il être un problème au sein Boehm GC - dois-je simplement l'ignorer

Est-ce que quelqu'un a des idées comment déboguer efficacement ce?

Ou, peut-on expliquer ce que précisément le message ci-dessus signifie

Était-ce utile?

La solution

Pour répondre à ma propre question plus de 3 mois plus tard ...

J'ai essayé connecter chaque pointeur dans un fichier, et la comparaison avec les pointeurs qui ont donné l'avertissement fracassé. Cependant, cela ne mène nulle part, les pointeurs suspects provenaient de diverses allocations dans le code de base (pas un lieu particulier qui a été peut-être cassé).

En attendant, sans GC, valgrind n'a signalé aucune erreur, mais bien sûr, cela ne veut pas dire qu'il est pas d'erreurs possibles existent encore.

Cependant, je me suis dit que je vais essayer si cette version particulière du GC a un bug subtil peut-être. J'utilisais la dernière version stable 7.1 GC. J'ai mis à 7.2alpha4, et le problème a disparu!

Si quelqu'un fonctionne à travers cela, nous espérons que cela va nous aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top