Skip to content

JVM Crash (HotSpot Error)

Bei Java gibt es keine C-typischen Schutzverletzungen mehr - könnte man annehmen. Leider wurde ich in letzter Zeit gleich bei mehreren Kunden eines Besseren belehrt: Bei einem SAP XI Kunden stürtzt die Sun Java VM (1.4.2_09) auf einem Itanium Rechner jede Stunde mit einer Accesss Violation ab (wenn der Compiler Thread des HotSpot JIT Compilers eine unserer Java Methoden übersetzen will). Offensichtlich hat die IA64 Version der Sun-VM hier einen Implementierungsfehler. Ich hoffe das Abschalten des JIT Compilers für diese eine Methode (mittels HotSpot Command File) bringt erst mal Linderung, bis die SAP Service Meldung bei Sun angekommen ist. Warum müssen Kunden immer auf solch exotische Systemlandschaften bauen? Bei einem anderen Kunden wurde der JVM Crash nicht durch einen Implementierungsfehler des JIT Compilers ausgelöst, sondern in externem nativer Code. Dies ist eine Fehlerquelle, eigentlich häufiger als die VM Fehler. In unserem Fall war es die Sun JDBC-ODBC Bridge (bzw. der damit eingebundene alte ODBC Treiber). Zum Glück waren wir bei dem Kunden sowieso dabei die letzten ODBC Bridges zu entfernen - Problem also schnell behoben. Weitere Gründe für Crashes in der JVM sind Hardware Probleme. Insbesondere defekter Speicher führt nicht selten zu zufälligen Abstürzen. Hier mein Tipp für Administration und Systemmanagement: Für einen stabilen Betrieb ist es unbedingt erforderlich mit solchen Abstürzen zu rechnen: zum Einen muss das Gesamtsystem einen solchen Abbruch überstehen (Restart, Redundanz und wiederaufsetzen aus jeder Situation). Aber ebenso wichtig ist es, im Falle eines solchen Absturzes schnell der Ursache auf die Spur zu kommen. Sun's HotSpot VM schreibt sehr informative Crash Dumps: ein File mit dem Namen hs_err_pid.log. Damit dieses File angelegt werden kann sollte der User der die JVM startet unbedingt Schreibrechte im aktuellen Startverzeichnis haben. Treten unerwartete Java Abstürze auf sollte Ihre erste Aktion sein, nach diesen Files zu suchen. Sie können sich auch nicht darauf verlassen, dass der Betriebsystem eigene Überwachungsmechanismus (Dr. Watson bei Windows oder coreadm bei Solaris) funktioniert: dadurch dass die HotSpot VM die Crashes selbst auswertet bekommt das Betriebsystem von den abnormalen Abstürzen nichts mit. Bei der J2EE Adapter Engine von SAP XI finden sich die Crashdumps zum Beispiel in: /usr/sap/XIx/DVEBMGS00/j2ee/cluster/server0/hs_err_*.log. Bei anderen Anwendungen bietet es sich an einfach den K-Fall einmal auszuprobieren.

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

Tobias on :

"einfach den K-Fall einmal auszuprobieren" Aha! Vorschläge, wie man sowas provoziert? Danke ;-)

Bernd Eckenfels on :

Du kannst einfach der JVM ein Kill Signal schicken. Unter Linux zum Beispiel musst du die PID des gewünschten (nicht produktiven) Java Prozesses suchen und dann mit: kill -BUS 1234 abschiessen. Du erhaelst dann das dump File und eine Ausgabe auf stdout. Wie man das unter Windows einfach hinbekommt weiss ich nicht, taskkill.exe kennt jedenfalls keine Signale. Muß man wohl mit dem Debugger attachen. Ich frag mal rum. Gruss Bernd

Tobias on :

Unix reicht, danke. Das SIGNAL kannte ich noch gar nicht. Danke nochmals.

Bernd Eckenfels on :

Das typischere SIGSEGV habe ich nicht genommen weil die JVM selbst dieses Signal innerhalb von Java Code abfängt und als NullPointerException interpretiert. Aus dem Grund führt SigSEGV nicht in allen Fällen (nur wenn der Programmcounter in VM Code Bereichen ist) zum Crash. Gruss Bernd

Mick on :

Unter Windows. CMD ausführen. dann tasklist eingeben. PID raussuchen und dann mit taskkill /pid ..(Nr.).. So müsste des gewesen sein. wie ich mich erinnere.

Add Comment

BBCode format allowed
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA