Windows Server 2003 Enterprise Edition Service Pack 2上的StackOverflowException

时间:2012-11-10 01:02:38

标签: c# com stack-overflow

我已经构建了一个独立的控制台应用程序,只有安装在Windows Server 2003 Enterprise Edition Service Pack 2测试计算机上才会抛出间歇性的StackOverFlow异常。代码太复杂了,不能发布,但这里有详细信息:
源代码是C#VS 2010.
源代码中没有递归调用,但确实使用了工作线程 发生StackOverflowException时,不会终止正在运行的进程 发生异常时,它将始终出现在同一位置 当异常发生时,它几乎总是在代码尝试跨COM边界初始化时发生,即:CAsset asset = new CAsset()其中CAsset是用C ++编写的COM对象。
通过调用System.Activator.CreateInstance

替换直接初始化
            System.Type assetType = System.Type.GetTypeFromProgID("GDMTCommon.HansenAsset");
            object activated = System.Activator.CreateInstance(assetType);
            asset = activated as CHansenAsset;

没有解决问题,但它确实将故障点移动到代码中的其他位置。此外,上述代码不会引发错误,但在直接转换后资产变量为null。此实例是初始化COM对象时未发生故障的一次 最令人困惑的行为是我可以在测试机器上的两组不同的源数据上运行该工具,对于一组源数据,代码将运行完成而不会出现错误,另一方面代码失败。 我在两台不同的Windows 7测试机器上安装了相同的工具,无法在任何一台机器上重现错误。我还在Windows Server 2003 Standard Edition Service Pack 2测试计算机上安装了该工具,但无法在该计算机上重现该错误 许多搜索都出现了其他一些问题,其中一个操作系统上的代码在Windows Server 2003上安装时会开始抛出StackOverflowExceptions,但我没有看到任何确定的解决方案。
我发现这篇知识库文章似乎描述了我的问题:
http://support.microsoft.com/kb/915750
但根据该文章,Service Pack 2中已修复此问题,并且我已验证测试计算机上已安装Service Pack 2. 任何帮助将不胜感激 问候,

1 个答案:

答案 0 :(得分:0)

运行Windows Update并将所有可用更新应用于计算机解决了堆栈溢出问题。仍然不确定首先是什么导致了他们。由于这是我无法访问的客户端计算机,因此我不得不等待他们应用更新。