在使用测试完成启动的Windows Server 2008 R2上运行应用程序时,将从mscorwks.dll引发异常代码C0000005。其他平台(Windows XP,Server 2003 R2,Windows 7 32位和64位)不会出现此异常。
来自单次执行的事件日志包含以下许多事件,其中事件ID 1023由.NET运行时引发:
.NET Runtime版本2.0.50727.4952 - 致命执行引擎错误(7383851A)(80131506)
应用程序本身使用Visual Studio从SOAP文件生成的WSDL接口,具有嵌入式互操作的COM对象,并且目标是.NET 4。
运行sfc / scannow ,发现受影响系统上的系统文件没有问题。
可以采取哪些疑难解答来确定解决方案?
答案 0 :(得分:9)
致命的引擎执行错误和访问冲突都是同一问题的症状。当.NET垃圾收集器检测到垃圾收集堆的内部结构被破坏时,引发FEEE。访问冲突是硬件异常,当处理器被要求访问具有无效地址的内存时由处理器引发。 AV的常见原因是堆损坏。
这种不幸事件通常是由非托管代码引起的。非托管代码也常常会出现潜在的内存管理错误,这些错误很长时间都会被忽视。这种bug可以造成的破坏往往是随机的。只是在具有不同内存分配模式的另一个操作系统上运行它就足以触发炸弹。
你有一个很好的候选人来解决问题。您需要与COM服务器供应商或作者合作来追踪该错误。
答案 1 :(得分:3)
0xC0000005是包含Win32错误的异常代码,意味着“拒绝访问”。鉴于您正在使用COM互操作并且正在获取ExecutionEngineException(在COM中,COR_E_EXECUTIONENGINE
; 0x80131506),我的猜测是它是COM组件中的NULL指针或ComImport
中的错误{{1}}指令{3}}代码。
答案 2 :(得分:3)
此错误是由TestComplete 7与混合托管/非托管应用程序中的堆交互方式中的缺陷引起的。而不是使用TestedApp.Run
方法使用以下代码块,修改为您选择的脚本语言,在VBScript中提供:
Dim oScript, command
Set oScript = CreateObject("WScript.Shell")
command = "%comspec% /c " & PATH_TO_EXE & " " & Args
oScript.Run command, 10, True
相关的MSDN 文章是 Run Method (Windows Script Host) 。
答案 3 :(得分:0)
TestComplete 7(包括最新的更新7.52)仅支持.NET Framework 4,最高版本为.NET 4 Beta 2.它不支持Framework的发行版本,因此可能是问题的原因。
尝试构建面向.NET 2.0的应用程序。这应该可以解决问题。
要测试.NET 4应用程序,您需要使用TestComplete 8。