繁体   English   中英

Windows Server 2003 Enterprise Edition Service Pack 2上的StackOverflowException

[英]StackOverflowException on Windows Server 2003 Enterprise Edition Service Pack 2

我已经构建了一个独立的控制台应用程序,该应用程序仅在安装在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;

不能解决问题,但是可以将故障点移到代码中的其他位置。 上面的代码也不会引发错误,但是直接转换后asset变量为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已安装在测试计算机上。
任何帮助将不胜感激。
问候,
周杰伦

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM