Каковы причины и решения кода исключения c0000005 в mscorwks.dll? - PullRequest
6 голосов
/ 29 декабря 2010

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

В журнале событий от одного выполнения есть много следующих событий с повышенным значением события 1023.NET Runtime:

.NET Runtime версия 2.0.50727.4952 - Ошибка механизма фатального выполнения (7383851A) (80131506)

Само приложение использует *Интерфейс 1009 * SOAP , сгенерированный Visual Studio из файла WSDL , COM-объекта со встроенным взаимодействием, и предназначен для .NET 4.

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

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

Ответы [ 4 ]

9 голосов
/ 29 декабря 2010

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

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

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

3 голосов
/ 30 декабря 2010

Эта ошибка вызвана недостатками в том, как 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 article is Метод запуска (Windows Script Host) .

3 голосов
/ 29 декабря 2010

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

0 голосов
/ 30 декабря 2010

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

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

Для тестирования приложений .NET 4 вам потребуется использовать TestComplete 8 .

...