这个短语可能来自于这篇Codeproject文章。该网站并不以技术评论著称。 "double fault" 的真正含义与操作系统内核有关,当内核的故障处理程序响应用户模式故障本身遭受故障时,会发生 double fault。这是致命的,并引发内核恐慌。在 Windows 上是蓝屏。处理器中也存在这种情况,当 x86 核心遭受“三重错误”时,它停止执行代码。 这里没有什么太糟糕的情况,他在文章中想要描述的是由于堆栈溢出而导致程序崩溃的情况,以及运行以响应崩溃的代码(例如注册到 UnhandledExceptionFilter())消耗了 Windows 给线程的最后一点堆栈,以尝试从 SO 中恢复。这不多,8192 个字节(两页),可用空间小于 7080 个字节。如果这样的代码消耗了储备,则表演结束,无法进行进一步的函数调用。内核会引发访问冲突并无条件终止进程。 这个小储备也是托管代码无法在 SO 中生存的原因,CLR 需要太多的堆栈空间来反映异常,因此立即终止程序而不进行尝试。有关底层机制“guard pages”的通用背景文章在这里。