gpt4 book ai didi

c# - 一台 PC 上更有可能出现 .NET StackOverflow 异常

转载 作者:行者123 更新时间:2023-11-30 21:48:27 26 4
gpt4 key购买 nike

我们有一个 .NET 4.0 WPF 客户端应用程序,每天在数百台客户端 PC/服务器上下载和执行。

我们最近有一位客户调用我们的支持热线,报告我们的一个例程出现错误。经过仔细调查,我发现这台机器在执行我们的一种递归算法时似乎更容易遇到 StackOverflow 异常。

另一台具有完全相同数据集的机器可以通过 30 次递归迭代完成该算法,而在这台机器上,它每次都会在进行到那一步之前失败。

(1) 是否有可能某台机器(或操作系统配置)更容易遇到 StackOverflow 异常?为什么一台机器会在 30 次迭代之前失败,而另一台机器会远远超出?是否有其他东西占用了“堆栈”中的空间?

在一个可能相关的注释中,同一位客户的错误日志中充满了“没有足够的配额可用于处理此命令”异常,同时尝试单击按钮、打开对话框等。

(2) 这两个错误是否指向一个共同的原因?

操作系统是Windows Server 2012。

更新:我遇到了Why does a recursive call cause StackOverflow at different stack depths?这看起来绝对有可能发生。我仍然无法确定是哪个设置导致了这种情况。

最佳答案

堆栈是一种有限的资源,您可能想用他们的特定数据集检查您的递归算法,看看是否存在异常的递归深度问题。他们的其中一条记录可能有循环引用。

可用内存量与此处无关。 .NET 应用程序的默认堆栈大小为 1MB。如果您怀疑您只是遗漏了一点并且没有循环引用,您可以使用 EDITBIN.EXE ( https://msdn.microsoft.com/en-us/library/d25ddyfc.aspx ) 来更改程序集的堆栈大小。

如果存在内存配额,您将需要查看为遇到问题的特定用户实现它的组策略。问题可能是服务器端配置错误。

关于c# - 一台 PC 上更有可能出现 .NET StackOverflow 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com