2013-02-19 9 views
9

Il mio programma Delphi viene eseguito come un servizio NT e sta funzionando benissimo per più di 2 mesi e poi si ferma improvvisamente e genera un crash dump:Cosa faccio quando il mio programma si arresta in modo anomalo con l'eccezione 0xc0000005 all'indirizzo 0?

Faulting nome dell'applicazione: tca_shctisvc_ip.exe, Versione: 7.1.0.1843 , timestamp: 0x2a425e19 ha provocato l'errore nome del modulo: sconosciuto, versione: 0.0.0.0, timestamp: 0x00000000 codice di eccezione: Offset 0xc0000005 Errore: 0x00000000

non ci sono state vere indirizzi lavorare da sulla base delle informazioni in caso di Windows log. Sono stato in grado di caricare il mini dump in WinDbg e ha detto che c'era un'eccezione ma ho riscontrato problemi con i frame dello stack. Uno strumento diverso (Viewminidump) è stato in grado di mostrarmi pile di thread in esecuzione.

Dove posso iniziare a risolvere questo problema?

risposta

24

Codice eccezione 0xc0000005 è una violazione di accesso. Un offset AV per errore 0x00000000 significa che qualcosa nel codice del servizio sta accedendo a un puntatore nil. Dovrai eseguire il debug del servizio mentre è in esecuzione per scoprire a cosa sta accedendo. Se non è possibile eseguirlo all'interno di un debugger, installare almeno un framework di logger di eccezioni di terze parti, ad esempio EurekaLog o MadExcept, per scoprire cosa stava facendo il servizio al momento dell'AV.

+5

+1 per suggerire un logger di eccezioni. Questo è lo strumento di debug più utile n. 1 che ho trovato oltre al debugger stesso. –

0

I problemi con i frame dello stack possono indicare la corruzione dello stack (una bestia davvero orribile), l'ottimizzazione o la miscelazione di framework come C/C++/C#/Delphi e altre follia come questo: non esiste uno standard assoluto rispetto ai frame dello stack . (alcune lingue non le hanno nemmeno!).

Quindi, suggerisco di essere un po 'seccato con i problemi del frame dello stack, ignorandolo, e poi basta usare la risposta di Remy.

0

mi è stato sempre lo stesso problema con una diversa applicazione,

Faulting application name: javaw.exe, version: 8.0.51.16, time stamp: 0x55763d32 
Faulting module name: mscorwks.dll, version: 2.0.50727.5485, time stamp: 0x53a11d6c 
Exception code: 0xc0000005 
Fault offset: 0x0000000000501090 
Faulting process id: 0x2960 
Faulting application start time: 0x01d0c39a93c695f2 
Faulting application path: C:\Program Files\Java\jre1.8.0_51\bin\javaw.exe 
Faulting module path:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll 

stavo usando il Toolkit Enhanced Mitigation Experience (EMET) di Microsoft e ho trovato disattivando l'EMET caratteristiche sul javaw.exe nel mio caso in quanto questa era l'applicazione anomala, ha permesso alla mia applicazione di funzionare correttamente. Assicurati di non avere alcun software simile con protezioni di sicurezza in memoria.

+0

Sembra che Oracle abbia utilizzato Delphi per creare Java SE 8 JRE;) – mjn

Problemi correlati