Stacküberlaufbedingungen unter Windows

Unter bestimmten Bedingungen kann ein Stacküberlauf beim Generieren von Speicherauszügen zu Problemen führen.

Stacküberläufe unter Windows werden durch den Wert c00000fd für ExceptionCode angegeben, wie in der folgenden Ausgabe dargestellt:
Unhandled exception
Type=Unhandled trap vmState=0x00040000
J9Generic_Signal_Number=00000040 ExceptionCode=c00000fd ExceptionAddress=7F646CA7
 ContextFlags=0001003f
Handler1=7FEE9C60 Handler2=7FEC9770
EDI=23CB4DCC ESI=23CB4DCC EAX=3F286561 EBX=23CAFF30
ECX=23C09CE4 EDX=7F65ED78
EIP=7F646CA7 ESP=24033000 EBP=2403303C EFLAGS=00010202
Module=failing_module.dll
Module_base_address=7F640000 Offset_in_DLL=00006ca7
Target=2_40_20080926_023633_lHdSMr (Windows Server 2003 5.2 build 3790 
Service Pack 2)
CPU=x86 (2 logical CPUs) (0x3ff78000 RAM)

Abhängig von der Größenordnung des Überlaufs kann der Speicherauszug ganz oder teilweise generiert werden oder der Vorgang schlägt fehl. Darüber hinaus kann es vorkommen, dass Konsoldaten abgeschnitten werden. Wenn SieExceptionCode=c00000fd, ist ein Stacküberlauf aufgetreten. Unter diesen Umständen können Sie einen Windows-Debugger wie WinDbg oder Visual Studio oder den Windows-Task-Manager verwenden, um eine Systemspeicherauszugsdatei zu generieren. Möglicherweise müssen Sie die Befehlszeilenoption -Xrs verwenden, um das Betriebssystem zum Stoppen der Java™ Virtual Machine zu zwingen. In diesem Fall zeigt ein Windows-Dialogfenster an, wann der Absturz auftritt.