Каковы причины и решения кода исключения c0000005 в mscorwks.dll файлы?

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

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

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

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

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

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

4 ответов


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

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

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


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


эта ошибка вызвана недостатками в способе взаимодействия 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 статьи Метод Запуска (Windows Script Host).


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

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

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