6

Il codice di eccezione C0000005 viene generato da mscorwks.dll quando l'applicazione viene eseguita su Windows Server 2008 R2 avviato utilizzando il test completato. Altre piattaforme (Windows   XP, Server 2003 R2, Windows   7 32-bit e 64-bit) non presentano questa eccezione.Quali sono le cause e le soluzioni del codice di eccezione c0000005 in mscorwks.dll?

Il registro eventi da una singola esecuzione ha molte delle seguente evento con ID evento 1023 sollevata dal runtime .NET:

.NET Runtime versione 2.0.50727.4952 - Fatal Error motore di esecuzione (7383851A) (80131506)

L'applicazione stessa si avvale di un'interfaccia SOAP generato da Visual Studio da un file WSDL, un oggetto COM con un'interoperabilità incorporato e si rivolge .NET 4.

0.123.516,41 mila

sfc/scannow è stato eseguito e non ha rilevato problemi con i file di sistema sul sistema interessato.

Quali problemi possono essere risolti per identificare una soluzione?

risposta

3

Questo errore è causato da difetti nel modo in cui TestComplete 7 interagisce con l'heap in applicazioni gestite/non gestite miste. Invece di utilizzare il metodo TestedApp.Run utilizzando il seguente blocco di codice, modificato per voi la scelta del linguaggio di scripting, presentato in VBScript:

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

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

Il relativo articolo è MSDNRun Method (Windows Script Host).

3

Un 0xC0000005 è un codice di eccezione che racchiude un errore Win32 che significa "Accesso negato". Dato che si utilizza l'interoperabilità COM e si ottiene un'ExecutionEngineException (in COM, COR_E_EXECUTIONENGINE; 0x80131506), suppongo che sia un puntatore NULL nel componente COM o una direttiva difettosa ComImport nel codice .NET.

+2

I codici di eccezione non sono Win32 I codici di errore non sono HRESULT non sono NTSTATUS. Scusa, amico mio. –

+0

Sapevo che qualcuno lo avrebbe chiamato. Ok, va bene, 0xC0000005 è un errore Win32. HRESULT corrispondente è 0x80070005. – codekaizen

+0

Non è un errore Win32. È un codice di eccezione. Feed 0xC0000005 in es. FormatMessage e non otterrai un risultato utile. –

8

Errore irreversibile di esecuzione del motore e una violazione di accesso sono entrambi sintomi dello stesso problema. FEEE viene generato quando il garbage collector .NET rileva che la struttura interna dell'heap garbage collection viene distrutta. Una violazione di accesso è un'eccezione hardware, sollevata dal processore quando viene richiesto di accedere alla memoria con un indirizzo non valido. Una causa comune di un AV è il danneggiamento dell'heap.

Questi tipi di incidenti sono causati in genere da codice non gestito. È anche abbastanza comune che il codice non gestito abbia bug di gestione della memoria latenti che possono passare inosservati per un lungo periodo. Il tipo di danno che il bug può causare tende ad essere piuttosto casuale. Basta farla funzionare su un altro sistema operativo che ha un diverso schema di allocazione della memoria può essere sufficiente per innescare la bomba.

Hai un candidato eccellente per la fonte del problema. Avrai bisogno di lavorare con il fornitore o l'autore del server COM per inseguire il bug.

0

TestComplete 7 (incluso l'ultimo aggiornamento 7.52) supporta .NET Framework 4 solo fino alla versione .NET 4 Beta 2. Non supporta la versione di rilascio del Framework, quindi questo potrebbe essere il motivo del problema.

Prova a creare l'applicazione con targeting .NET 2.0. Questo dovrebbe risolvere il problema.

Per testare le applicazioni .NET 4, è necessario utilizzare TestComplete 8.

+0

Siamo a conoscenza delle limitazioni del supporto .Net di TestComplete 7. Al momento stiamo passando a TestComplete 8, ma quanto sopra è una soluzione per i problemi di compatibilità .Net 4. – Erick

Problemi correlati