Das Problem
Bei der Arbeit mit XEN 2.0.5c (z.B. unter SUSE LINUX 9.3) friert ein Gastsystem (eine User-Domäne) ein. Teilweise ist es möglich, die Domain (z.B. mit dem Namen testdom
) mit
root@linux# xm destroy testdom
zu löschen und anschließend neu zu starten. Teilweise muss jedoch das komplette Wirtssystem neu gebootet werden.
Die Ursache
Obwohl die XEN-Version von SUSE LINUX 9.3 sehr stabil läuft, gibt es einen Fehler bei der Behandlung von Coredumps in den User-Domains. Wenn ein normales Anwenderprogramm - es muss noch nichtmal als root
laufen - einen Coredump erzeugt (z.B. durch einen Segmentation fault), dann kann es zu obigem Phänomen kommen. Dabei ist nicht der Programmabsturz das Problem, sondern das Erzeugen des Coredumps selbst.
Die Lösung
Leider ist uns derzeit keine ursächliche Lösung des Problems bekannt. Das Problem tritt aber nicht mehr auf, wenn man die Erzeugung von Coredumps verhindert. Dies geht durch Setzen der maximalen Coredump-Größe auf 0 mit ulimit
. Dies ist eine Einstellung der Shell und wird an Unterprozesse vererbt. Überprüfen Sie die Einstellung wie folgt:
user@linux> ulimit -c
unlimited
In diesem Beispiel sind Coredumps aktiviert. Sie deaktivieren diese mit:
user@linux> ulimit -c 0
Diese Einstellung gilt aber nur für die aktuelle Shell und von dort aus gestartete Prozesse. Wenn dies systemweit gelten soll, können Sie den Befehl z.B. in /etc/profile
einbauen bzw. einen dort vorhandenen Befehl ändern.
Hinweis:
Bei SUSE LINUX sind Coredumps per Default deaktiviert, können aber von einem Benutzer individuell wieder eingeschaltet werden.