8

当应用程序在使用测试完成启动的 Windows Server 2008 R2 上运行时,从 mscorwks.dll 引发异常代码 C0000005。其他平台(Windows XP、Server 2003 R2、Windows 7 32 位和 64 位)不存在此异常。

单次执行的事件日志包含许多由 .NET 运行时引发的事件 ID 为 1023 的以下事件:

.NET 运行时版本 2.0.50727.4952 - 致命的执行引擎错误 (7383851A) (80131506)

该应用程序本身使用由 Visual Studio 从WSDL文件生成的SOAP接口,这是一个具有嵌入式互操作的 COM 对象,并且面向.NET 4。

运行sfc /scannow并发现受影响系统上的系统文件没有问题。

可以进行哪些故障排除来确定解决方案?

4

4 回答 4

9

致命引擎执行错误和访问冲突都是同一问题的症状。当 .NET 垃圾收集器检测到垃圾收集堆的内部结构被破坏时,会引发 FEEE。访问冲突是一种硬件异常,由处理器在被要求访问具有无效地址的内存时引发。AV 的一个常见原因是堆损坏。

这类事故通常是由非托管代码引起的。非托管代码也很普遍存在潜在的内存管理错误,这些错误可能会在很长一段时间内被忽视。该错误可以造成的损害往往是非常随机的。只需在另一个具有不同内存分配模式的操作系统上运行它就足以触发炸弹。

你有一个很好的人选作为麻烦的根源。您需要与 COM 服务器供应商或作者合作来追踪该错误。

于 2010-12-29T04:18:34.557 回答
3

0xC0000005 是包含 Win32 错误的异常代码,表示“访问被拒绝”。鉴于您正在使用 COM 互操作并且收到 ExecutionEngineException(在 COM 中,COR_E_EXECUTIONENGINE0x80131506),我的猜测是它要么是 COM 组件中的 NULL 指针,要么是.NET代码ComImport中的错误指令。

于 2010-12-28T23:15:54.923 回答
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)

于 2010-12-29T21:05:59.397 回答
0

TestComplete 7(包括最新更新 7.52)仅支持 .NET Framework 4 直到版本 .NET 4 Beta 2。它不支持 Framework 的发布版本,所以这可能是问题的原因。

尝试构建面向 .NET 2.0 的应用程序。这应该可以解决问题。

要测试 .NET 4 应用程序,您需要使用TestComplete 8

于 2010-12-30T08:42:53.267 回答