2010-11-15 25 views
5

En date d'hier (peut-être après une mise à jour récente de PHP?), J'obtiens des bugs non-déterministes très étranges dans php 5.3.3. Ils apparaissent également dans notre serveur de production en PHP 5.3.2.Bogue de référence d'objet non-déterministe en PHP 5.3.X

Les erreurs sont essentiellement de Fatal error: Uncaught exception 'ErrorException' with message 'Attempt to assign property of non-object' dans diverses parties de la base de code. Généralement, la ligne d'erreur est quelque chose comme: $this->foo = $bar dans un appel __construct().

$this est introuvable dans le constructeur ?!

Je n'ai aucune idée de ce qui se passe. Des idées? Est-ce peut-être une régression de ce bug ?: http://bugs.php.net/31525

Modifier: Je dois mentionner, rafraîchir le script après un peu de temps, avec absolument aucune modification du code, fait fonctionner à nouveau. Donc non déterministe.

Edit 2: De plus, alors que PHP est réglé pour se connecter, même le plus minuscule des erreurs et est la connexion d'autres erreurs comme ils se produisent, cette erreur n'est pas enregistrée dans le fichier journal. Cela m'amène à penser que nous examinons une erreur de dépendance du moteur PHP.

+0

tout cache opcode utilisé? – ajreal

+0

Sur ma boite locale, il n'y en a pas: http://pastie.org/pastes/1300493/text?key=79mmr7dmm10qi4cvy6kvg – Karan

+0

Montre le constructeur ... En fait, montre toute la classe si tu peux ... toujours arriver sur la même classe? Ou est-ce que l'erreur est errante? Avez-vous des traces de retour complètes pour être sûr que l'erreur ne se déclenche pas sur une autre ligne, mais qu'elle y soit affichée (comme peut-être à l'intérieur d'une méthode magique)? – ircmaxell

Répondre

4

Eh bien, il semble être un bug ...

Voici quelques rapports de bugs pertinents:

+0

Oui, cela confirme mes soupçons. Nous allons installer le dernier snapshot de 5.3.x et publierons notre progression ici. Merci d'avoir répondu! – Karan

+0

Par curiosité, sur quelle plateforme êtes-vous (32 bits x86 ou 64 bits x64)? – ircmaxell

+0

Linux karan-desktop 2.6.35-22-générique # 35-Ubuntu SMP sam. Oct. 16 20:36:48 UTC 2010 i686 GNU/Linux (32 bits) et le serveur de production est en cours d'exécution 64 bits (Linux cyphontech 2.6.32- 25-serveur # 45-Ubuntu SMP sam. Oct. 16 20:06:58 UTC 2010 x86_64 GNU/Linux) – Karan