6

테스트 완료를 사용하여 시작된 Windows Server 2008 R2에서 응용 프로그램을 실행할 때 예외 코드 C0000005가 mscorwks.dll에서 발생합니다. 다른 플랫폼 (Windows   XP, Server 2003 R2, Windows  , 32 비트 및 64 비트 7)은이 예외를 나타내지 않습니다.mscorwks.dll의 예외 코드 c0000005의 원인과 해결 방법은 무엇입니까?

단일 실행에서 이벤트 로그가있는 .NET 런타임에 의해 제기 된 이벤트 ID 1023 다음과 같은 이벤트의 많은 :

.NET 런타임 버전 2.0.50727.4952 - 심각한 실행 엔진 오류 (7383851A) (80,131,506)은

애플리케이션 자체는 WSDL 파일, 상호 운용성 매립와 COM 객체로부터 비주얼 스튜디오에 의해 생성 된 SOAP 인터페이스를 사용한다, 그리고 제 .NET

를 타겟팅

sfc/scannow가 실행되었으며 영향을받는 시스템의 시스템 파일에 문제가 없음을 발견했습니다.

해결책을 식별하기 위해 어떤 문제 해결을 수행 할 수 있습니까?

답변

3

이 오류는 TestComplete 7이 혼합 된 관리되는/관리되지 않는 응용 프로그램에서 힙과 상호 작용하는 방식의 결함으로 인해 발생합니다. 대신 VBScript에 제시된 스크립트 언어의 당신의 선택을 위해 수정 된 코드의 다음 블록을 사용하여 TestedApp.Run 방법을 사용 :

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 interop을 사용하고 있으며 ExecutionEngineException (COM에서 COR_E_EXECUTIONENGINE; 0x80131506)을 얻고 있다면 내 생각에 COM 구성 요소의 NULL 포인터이거나 .NET 코드의 결함이있는 ComImport 지시문입니다.

+2

예외 코드가 win32가 아닙니다. 오류 코드가 아닙니다. HRESULT가 NTSTATUS가 아닙니다. 미안 해요. –

+0

누군가가 이것을 부르는 것을 알았습니다. 좋아요, 0xC0000005는 Win32 오류입니다. 해당 HRESULT는 0x80070005입니다. – codekaizen

+0

win32 오류가 아닙니다. 그것은 예외 코드입니다. 예 : FormatMessage에 0xC0000005를 입력하면 유용한 결과를 얻지 못합니다. –

8

치명적인 엔진 실행 오류 및 액세스 위반은 모두 같은 문제의 현상입니다. 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

우리는 TestComplete 7의 .Net 지원 제한에 대해 알고 있습니다. 우리는 현재 TestComplete 8로 이동 중입니다. 그러나 위의 내용은 .Net 4 호환성 문제를 해결하기위한 방법입니다. – Erick

관련 문제