PHP: Gleitkommazahl legt Server lahm
Anzeige Hier werben
Eine einzige Zahl macht es möglich: Ein Fehler bei der Umwandlung bestimmter Zahlen führt unter der Skriptsprache PHP zu einer Vollauslastung des Servers. Wenn die Zeichenkette 2.2250738585072011e-308 in eine Gleitkommazahl in der Funktion zend_strtod auf 32-Bit-Systemen übersetzt wird, führt dies zu einer Endlosschleife, in dessen Folge die CPU voll ausgelastet wird.
Betroffen sind dabei die PHP-Versionen 5.3.3-6, 5.3.2-1 und 5.3.1. Bisher wurde der Fehler nur in den Entwicklungsversionen beseitigt. Der Fehler kann aber selbst umgangen werden: PHP muss laut Anwenderberichten mit dem Parameter -mfpmath=sse oder mit -ffloat-store neu kompiliert werden.
Offenbar tritt der Fehler nur bei Intel-Prozessoren, auf denen der x87-Koprozessor für die Verarbeitung von Gleitkommazahlen genutzt wird, auf. Das x87-Design enthält einen seit Längerem bekannten Fehler, der bei der rechnerischen Annäherung an eine 64-Bit-Gleitkommazahl zu diesem Problem führt.



