输出“堆栈溢出重复 24047 次......”是否意味着我在 dotnet 中发现了一个错误?

问题描述

我为我的项目编写了新代码,当我运行单元测试时,我注意到 dotnet 崩溃了。

但我不知道为什么。所以我将一些代码移到控制台应用程序并运行它。然后我得到了这个输出

Stack overflow.
Repeat 24047 times:
--------------------------------
   at [[ class and method names here ]]
--------------------------------
   at [[ class and method names here ]]

一段时间后,出现 StackOverflowException: The runtime refused to evaluate the expression at this time. 之后,dotnet 再次崩溃。

就是这样。这样build过程(编译)就成功了,但是好像CLR崩溃了??

这是我的错还是我应该向 Microsoft 报告的事情(甚至可能与安全相关)?

编辑:这是一些代码以及我的问题的解释。这是我网站上的递归错误https://dotnetfiddle.net/RD69Mk

解决方法

是你的错。您有一个递归方法调用,您应该查看列出的提到的类和方法。请勿向 Microsoft 报告。

相反,使用调试器并逐步执行您的代码以查看它的作用以及为什么这样做。

重现问题的最简单程序是

class Program
{
    static void Main()
    {
        Main();
    }
}

它是一个有效的 C# 程序吗?是的。是否有意义?不是。是微软的问题吗?号

递归实现需要一个停止条件,即它中断对自身的重复调用的情况。