PHP: Gleitkommazahl legt Server lahm

von Marc Rochow | 0 | 0 Kommentare | 1022 Aufrufe

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.

Bild zu PHP: Gleitkommazahl legt Server lahm

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.

Über den Autor: Marc Rochow
Computer Scientologe im 7. Semester an der HS Augsburg. Schreibt gerade an seiner Bachelorarbeit im Bereich neue Webtechnologien und arbeitet als Werksstudent bei Team23. Nebenbei betreibt er noch seinen Blog www.gironimo.org
Profilseite betrachten


Kommentare: PHP: Gleitkommazahl legt Server lahm