【问题标题】:Which exception terminates process ? (iis's w3wp)哪个异常终止进程? (iis的w3wp)
【发布时间】:2014-05-19 15:04:16
【问题描述】:

我读过this article 试图找到:“哪些异常终止了整个进程”(iis,所以基本上应用程序池终止 - w3wp.exe

我已经知道(根据我的经验):

  • StackOverflow 异常确实终止了
  • 内存不足异常也会终止

我已经阅读了Hans' answer here 重定向到SSCLI20 源代码,他在其中给出了代码示例:

TerminateProcess(GetCurrentProcess(), COR_E_STACKOVERFLOW);

于是我下载了SSCLI20 并搜索了更多TerminateProcess(GetCurrentProcess()...

并找到了那些条目:

但我不确定这是否是整个列表,即使是这样 - 也不是很清楚。

问题

我在哪里可以找到终止进程的完整异常列表?

【问题讨论】:

  • 您还会查看相关的 CLR 主机。 ASP.NET 和 SQL Server 实现了特殊的规则。
  • 我的两分钱:Thread 中未处理的任何异常都会终止进程。
  • 为什么需要这个?你在解决哪个问题?例如,知道 SO 将终止您的程序实际上并不能帮助您阻止它(除非您仔细重新考虑每一行代码...),因为您无法捕捉到它?...
  • @Lanorkin Learning 我认为不会伤害你。可能是他有兴趣学习。好奇心!
  • 从事 iis 生产的人都知道我在说什么

标签: .net exception iis


【解决方案1】:

找到了。
里希特来救援。

专业术语叫:损坏状态异常(CSE'e)

损坏状态异常 (CSE): 这些是无法捕获的异常。在幕后 Environment 的 FailFast 方法会引发这些异常之一。因此,它无法被捕获,并且您的应用程序以未处理的异常结束。

从书:

更多:

重要:

注意:即使使用属性 HandleProcessCorruptedStateExceptions,由于给定的原因,我们也无法处理以下异常:

  • StackOverflowException - 这是硬件故障,没有更多堆栈可用于进一步处理(感谢 Abel Braaksma 指出这一点)。

  • ExecutionEngineException - 由于堆内存损坏而发生,因此无法进一步处理(参考)。

另一个来自 Abhishek Sur 的有用链接:

http://dailydotnettips.com/2013/09/23/corruptedstateexceptions-in-net-a-way-to-handle/

【讨论】:

    【解决方案2】:

    使用微软的调试诊断工具

    查看http://support.microsoft.com/kb/919789/en-us,它详细解释了所有必要的步骤。

    导致崩溃的其他异常 1. Access Denied 异常 2.比特率节流 3.无效操作异常 除了您发布的上述内容。

    【讨论】:

    • 感谢您的评论。该工具是否提供 CSE 列表?
    • 是的,这个工具提供了完整的崩溃信息。
    • 我对在崩溃后找到异常不感兴趣。我已经从事件日志中知道了这一点。我想知道(正如我的问题所述)--Which exception terminates process (iis's w3wp)?
    猜你喜欢
    • 2011-01-26
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多