6

Код исключения C0000005 вызывается из файла mscorwks.dll, когда приложение запускается в Windows Server 2008 R2, запущенном с использованием теста. Другие платформы (Windows   XP, Server 2003 R2, Windows   7 32-разрядные и 64-разрядные) не представляют собой это исключение.Каковы причины и решения кода исключения c0000005 в файле mscorwks.dll?

Журнал событий из одного исполнения имеет много следующее событие с кодом события 1023 поднятый .NET Runtime:

.NET время выполнения версия 2.0.50727.4952 - Fatal Error Execution Engine (7383851A) (80131506)

само приложение использует интерфейс SOAP генерируемой Visual Studio из WSDL файла, СОМ-объект со встроенным Interop и ориентирована .NET 4.

sfc/scannow был запущен и не обнаружил проблем с системными файлами в затронутой системе.

Какое устранение неисправностей может быть сделано для определения решения?

ответ

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

Код ошибки 0xC0000005 - это код исключения, который обертывает ошибку Win32, что означает «Доступ запрещен». Учитывая, что вы используете COM-взаимодействие и получаете ExecutionEngineException (в COM, COR_E_EXECUTIONENGINE; 0x80131506), я предполагаю, что либо это указатель NULL в компоненте COM, либо неисправная директива ComImport в вашем коде .NET.

+2

Исключительные коды не являются кодами ошибок win32, а не HRESULT не являются NTSTATUS. Извините, мой питомец. –

+0

Я знал, что кто-то вызовет это. Хорошо, отлично, 0xC0000005 является ошибкой Win32. Соответствующий HRESULT - 0x80070005. – codekaizen

+0

Это не ошибка win32. Это код исключения. Подайте 0xC0000005, например FormatMessage, и вы не получите полезный результат. –

8

Ошибка выполнения Fatal Engine и нарушение доступа являются симптомами одной и той же проблемы. FEEE возникает, когда сборщик мусора .NET обнаруживает, что внутренняя структура собранной мусором мусора уничтожена. Нарушение доступа представляет собой аппаратное исключение, вызванное процессором, когда ему предлагается получить доступ к памяти с недопустимым адресом. Общей причиной AV является разложение кучи.

Эти виды сбоев очень часто вызываются неуправляемым кодом. Также неудивительно, что неуправляемый код имеет скрытые ошибки управления памятью, которые могут оставаться незамеченными в течение длительного времени. Вид ущерба, который может сделать ошибка, имеет тенденцию быть довольно случайным. Просто запустить его в другой операционной системе, у которой есть другой шаблон распределения памяти, может быть достаточно, чтобы вызвать бомбу.

У вас есть отличный кандидат на источник неприятностей. Вам нужно будет работать с поставщиком или автором COM-сервера, чтобы преследовать ошибку.

0

TestComplete 7 (включая последнее обновление 7.52) поддерживает .NET Framework 4 только до версии .NET 4 Beta 2. Он не поддерживает версию версии Framework, поэтому это может быть причиной проблемы.

Попробуйте создать приложение для таргетинга .NET 2.0. Это должно решить проблему.

Чтобы протестировать приложения .NET 4, вам нужно будет использовать TestComplete 8.

+0

Мы знаем о ограничениях на поддержку .NET в TestComplete 7. В настоящее время мы переходим к TestComplete 8, но вышеописанная проблема связана с проблемами совместимости .Net 4. – Erick