Segmentation Faults – Der schlimmste aller Fehler ist …
Kommentare

Wie zeigt sich ein Segmentation Fault
Der Segmentation Fault führt immer zu einem sofortigen Abbruch der Programmausführung. Wenn PHP nur auf der Kommandozeile ausgeführt wird, ist sehr einfach zu

Wie zeigt sich ein Segmentation Fault

Der Segmentation Fault führt immer zu einem sofortigen Abbruch der Programmausführung. Wenn PHP nur auf der Kommandozeile ausgeführt wird, ist sehr einfach zu erkennen, dass ein Segmentation Fault vorliegt. Der Interpreter meldet diesen Fehler einfach über stderr an die Konsole, in der der Segmentation Fault geschrieben wird.

Listing 1: Quelltext von „reproduceSegFault.php“
message = $message;
        }

        function serialize() 
        {
                return serialize(array($this->message, $this->member));
        }

        function unserialize($serialized) 
        {
                list($this->message, $this->member) = unserialize($serialized);
        }
}

$constructed = new Test("original");
$constructed->member = $constructed; //References to self (in this example pointless, but technically legal) 
var_dump($constructed);
$transported = unserialize(serialize($constructed)); // Segmentation fault.
Listing 2: Ausgabe von „reproduceSegFault.php“
object(Test)#1 (2) {
  ["member"]=>
  *RECURSION*
  ["message"]=>
  string(8) "original"
}
Segmentation fault

Etwas schwieriger ist es, mit PHP-Skripten, die über einen Webserver ausgeführt werden, einen Segmentation Fault zu erkennen. Es muss unterschieden werden, ob PHP direkt als Modul des Webservers (z. B. mod_php) oder als Fast-CGI (php-cgi in Debian Squeeze) ausgeführt wird. Bei Verwendung von Nginx und php-cgi und der Anfrage nach reproduceSegFault.php wird einfach eine HTTP-Fehlermeldung ausgegeben: 502 Bad Gateway (Listing 1, der Quelltext ist bei bugs.php.net zu finden [3] und ermöglicht in der Version PHP 5.3.3 das Produzieren eines Segmentation Faults). Dieser Aufruf zeigt, dass der Interpreter die Verarbeitung gestoppt hat und der Nginx-Webserver nicht mehr mit der php-cgi-Instanz kommunizieren kann.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -