J'ai trouvé un thread d'une application multithread qui se bloque dans VxWorks. Je n'ai pas d'informations de débogage. Lors d'une analyse plus approfondie, j'ai découvert que le plantage était dû à une modification de la valeur de l'adresse mémoire globale.Un problème étrange dans la mémoire de tas!
Cette adresse de mémoire globale (qui est une adresse à une fonction j'utilise un pointeur de fonction) est stockée à un emplacement d'adresse particulier dans le tas. J'ai trouvé que cette adresse de mémoire globale elle-même est réduite de 2, ce qui entraîne un accès incorrect et une erreur d'instruction de chargement.
Cela se produit de manière aléatoire. Mais, je suis vraiment surpris de ce qui peut entraîner la réduction de la valeur d'adresse de 2.
Toutes les suppositions ou idées ou indications dans n'importe quelle direction peuvent être utiles.
Merci beaucoup pour cette réponse. Nous explorons cela. Mais, y a-t-il d'autres façons de trouver? – Jay
Vous n'avez pas besoin d'un autre moyen. Ce point d'arrêt matériel est * très * efficace si l'adresse de la corruption de mémoire se répète bien. –
Depuis, l'occurance est aléatoire, je ne sais pas quand il se répète à nouveau. Donc, je veux un autre moyen à part ça. – Jay