Windows 中的堆栈溢出条件

在某些情况下,在生成转储时发生堆栈溢出可能会造成故障。

Windows 上的堆栈溢出由 ExceptionCode 的值 c00000fd 标识,如以下输出中所示:
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)

溢出大小会影响转储是成功、部分成功还是失败。 此外,可能会截断控制台数据。 如果你看到ExceptionCode=c00000fd,发生堆栈溢出。 在这些情况下,可以使用 Windows 调试器 (例如, WinDbg 或 Visual Studio) 或 Windows 任务管理器来生成系统转储文件。 您可能需要使用 -Xrs 命令行选项来强制操作系统停止 Java™ 虚拟机。 在这种情况下, Windows 对话框指示发生崩溃的时间。