6

El código de excepción C0000005 se emite desde mscorwks.dll cuando la aplicación se ejecuta en Windows Server 2008 R2 iniciado con la prueba completa. Otras plataformas (Windows   XP, Server 2003 R2, Windows   7 de 32 bits y 64 bits) no presentan esta excepción.¿Cuáles son las causas y soluciones del código de excepción c0000005 en mscorwks.dll?

El registro de eventos de una sola ejecución tiene muchas de las siguiente evento con el identificador de suceso 1023 planteada por el tiempo de ejecución de .NET:

.NET Runtime versión 2.0.50727.4952 - Fatal Error motor de ejecución (7383851A) (80131506)

La propia aplicación hace uso de una interfaz SOAP generada por Visual Studio desde un archivo WSDL, un objeto COM con una interoperabilidad incorporado y está segmentando .NET 4.

sfc/scannow se ejecutó y no encontró problemas con los archivos del sistema en el sistema afectado.

¿Qué solución de problemas se puede hacer para identificar una solución?

Respuesta

3

Este error está causado por fallas en la forma en que TestComplete 7 interactúa con el montón en aplicaciones mixtas administradas/no administradas. En lugar de utilizar el método TestedApp.Run utilizando el siguiente bloque de código, modificado para le elección del lenguaje de script, presentado en VBScript:

Dim oScript, command 
Set oScript = CreateObject("WScript.Shell") 

command = "%comspec% /c " & PATH_TO_EXE & " " & Args 
oScript.Run command, 10, True 

El artículo en cuestión es MSDNRun Method (Windows Script Host).

3

A 0xC0000005 es un código de excepción que envuelve un error Win32 que significa "Acceso denegado". Dado que está utilizando la interoperabilidad COM y obtiene ExecutionEngineException (en COM, COR_E_EXECUTIONENGINE; 0x80131506), supongo que o bien es un puntero NULL en el componente COM o una directiva defectuosa ComImport en su código .NET.

+2

Los códigos de excepción no son win32 Los códigos de error no son HRESULT no son NTSTATUS. Lo siento, cariño, peeve mio. –

+0

Sabía que alguien llamaría esto. Ok, bien, el 0xC0000005 es un error de Win32. El HRESULT correspondiente es 0x80070005. – codekaizen

+0

No es un error win32. Es un código de excepción. Introduzca 0xC0000005 en, por ejemplo, FormatMessage y no obtendrá un resultado útil. –

8

Error grave de ejecución del motor y una infracción de acceso son síntomas del mismo problema. FEEE se genera cuando el recolector de basura .NET detecta que se destruye la estructura interna del montón recogido de basura. Una infracción de acceso es una excepción de hardware, que plantea el procesador cuando se le pide que acceda a la memoria con una dirección no válida. Una causa común de un AV es la corrupción del montón.

Este tipo de contratiempos son muy comúnmente causados ​​por un código no administrado. También es bastante común que el código no administrado tenga errores latentes de administración de memoria que pueden pasar desapercibidos durante mucho tiempo. El tipo de daño que puede hacer el error tiende a ser bastante aleatorio. Simplemente ejecutarlo en otro sistema operativo que tiene un patrón de asignación de memoria diferente puede ser suficiente para activar la bomba.

Tiene un excelente candidato para el origen del problema. Tendrá que trabajar con el proveedor o autor del servidor COM para perseguir el error.

0

TestComplete 7 (incluida la última actualización 7.52) admite .NET Framework 4 solo hasta la versión .NET 4 Beta 2. No es compatible con la versión de lanzamiento del Framework, por lo que esta puede ser la razón del problema.

Intente crear la orientación de la aplicación .NET 2.0. Esto deberia resolver el problema.

Para probar las aplicaciones .NET 4, deberá usar TestComplete 8.

+0

Estamos al tanto de las limitaciones de soporte de .Net de TestComplete 7. Actualmente estamos en el proceso de pasar a TestComplete 8, pero lo anterior es una solución alternativa para los problemas de compatibilidad con .Net 4. – Erick

Cuestiones relacionadas