.NET 4中的StackOverflowException

Sam*_*ron 15 .net c# stack-overflow crash runtime

以下代码正常工作,直到我升级到.NET 4(x64)

namespace CrashME
{
    class Program
    {
        private static volatile bool testCrash = false;
        private static void Crash()
        {
            try
            {
            }
            finally
            {
                HttpRuntime.Cache.Insert("xxx", testCrash);
            }

        }

        static void Main(string[] args)
        {
            Crash();
            // Works on .NET 3.5 , crash on .NET 4
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我刚刚发现了运行时错误,还是我的使用存在问题?

Jus*_*tin 5

这似乎是CLR中的一个错误 - 您应该将其报告给Microsoft.

需要注意的是,StackOverflowException发生在CLR尝试执行 Crash不,期间的执行Crash方法-实际上该计划从未进入方法.这似乎表明这是CLR中的一些低级故障.(另请注意,抛出的异常也没有堆栈跟踪).

此异常非常特定于这种情况 - 更改任何一项修复此问题,例如以下代码正常工作:

private static void Crash()
{
    bool testCrash2 = testCrash;
    try { }
    finally
    {
        HttpRuntime.Cache.Insert("xxx", testCrash2);
    }
}
Run Code Online (Sandbox Code Playgroud)

我建议您向Microsoft报告,但尝试通过在此期间调整代码来解决此问题.