为什么.net进程退出代码不等于stackoverflow异常退出代码?

时间:2013-11-24 18:23:43

标签: .net process exit-code stack-overflow

我有.Net控制台应用程序,可能会抛出Stackoverflow异常。 根据Hans Passant在此处的回答How does the well-known "Process is terminated due to StackOverflowException" screen appears,当应用程序因StackOverflow异常而失败时,它应返回COR_E_STACKOVERFLOW结果代码。

我查看了.net 2源代码,这是常量:

    internal const int COR_E_STACKOVERFLOW = unchecked((int)0x800703E9); 

StackOverflow的代码是这样的:

void DECLSPEC_NORETURN EEPolicy::HandleFatalStackOverflow(EXCEPTION_POINTERS *pExceptionInfo, BOOL fSkipDebugger)
{
  // This is fatal error.  We do not care about SO mode any more.
  // All of the code from here on out is robust to any failures in any API's that are called.
  ....

  DisplayStackOverflowException();

  TerminateProcess(GetCurrentProcess(), COR_E_STACKOVERFLOW);
  UNREACHABLE();
}

等于-2147023895。 (这是样本 - http://www.dotnetfiddle.net/1rAvoF

我从另一个应用程序启动我的控制台应用程序,然后检查process.ExitCode

但是我得到的退出代码是-1073741571,它不等于stackoverflow异常代码。

为什么它返回不同的退出代码?

0 个答案:

没有答案