簡體   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