2010-02-17 4 views
0

Je rencontre ce qui semble être un problème de corruption de mémoire avec PHP. J'ai une grande base de code que je porte sur l'exécution 5.3. Je reçois des erreurs de segmentation et "zend_mm_heap corrompu", mais les backtraces de ces points ne sont pas utiles. Les backtraces ramènent toujours à diverses fonctions de base de PHP telles que l'assignation de variable ou la concaténation. Pour autant que je sache, la mémoire de PHP est corrompue à un moment donné avant que les erreurs de corruption se produisent. J'ai suivi les instructions sur bugs.php.net/bugs-getting-valgrind-log.php et j'ai généré un journal valgrind assez volumineux. Il est rempli de nombreuses erreurs comme "Le saut conditionnel ou le déplacement dépend de la valeur non initialisée". Parce qu'il y a tellement d'informations dans ce journal de valgrind, je ne suis pas sûr de ce qu'est un vrai défaut et de ce qu'est un comportement normal.Déboguer la corruption de mémoire PHP avec Valgrind

est ici une partie de la sortie valgrind: http://pastie.org/private/exngtften3jeppqyjn4hw

Répondre

0

Toutes les erreurs que vous avez publiés sont des utilisations des valeurs non initialisées. Utilisez l'option valgrind --track-origins=yes (ajoutée dans valgrind 3.4.0) pour afficher l'origine de la valeur qui finit par être utilisée non initialisée. Il s'exécutera plus lentement et utilisera plus de mémoire, mais peut afficher des informations beaucoup plus utiles pour l'utilisation de valeurs non initialisées.

+0

Merci pour vos commentaires. Nous avons pu isoler le problème en tant que problème avec l'extension mbstring. Nous n'avons pas identifié le problème, mais nous sommes capables de nous débrouiller sans mbstring pour l'instant. – achristi

Questions connexes