2011-10-14 9 views
5

Ho creato uno script AHK di nome code_2, lo ho compilato e inserito nella mia cartella di avvio in modo che si avvii automaticamente ogni volta che accendo il computer.Che cos'è l'errore "unknown software exception (0xc00000fd)" e come evitarlo?

Lo script sta controllando alcuni siti Web per i nuovi aggiornamenti e ogni volta che viene rilevato un aggiornamento sul sito Web, scarica tali aggiornamenti utilizzando UrlDownloadToFile.

In un primo momento il copione sembrava funzionare bene, ma di recente ho cominciato a ricevere i seguenti messaggi dal mio computer dopo il mio script è stato in esecuzione per circa 15 minuti:

C: \ Documents and Settings \ Administrator \ 「開始」 功能 表 \ 程式 集 \ 啟動 \ code_2.exe: code_2.exe - 應用 程式 錯誤

應用 程式 發生 例外 un'eccezione sconosciuta software (0xc00000fd) 於 位置 0x7c92eddc

請 按 [確定].終止 程式

請 按 [取消] 進行 程式 偵錯

Qualsiasi idea di cosa questo messaggio è tutto? (Siamo spiacenti, per il cinese qui, ma penso che se conosci questo messaggio per il suo numero, hai familiarità con il contenuto).

In ogni caso, qui è la traduzione del messaggio fatto da Google Translate:

C: \ Documents and Settings \ Administrator \ Menu \ Programs "Start" \ Startup \ code_2.exe: code_2.exe - Errore applicazione

L'applicazione si è verificata eccezione eccezione software sconosciuto (0xc00000fd) in posizione 0x7c92eddc.

Premere [OK] per terminare il programma Premere [Annulla] per programmare debug

risposta

15

Credo che 0xc00000fd è un'eccezione overflow dello stack (http://support.microsoft.com/kb/315937) . Senza vedere la tua sceneggiatura, è difficile dire con certezza cosa sta andando male, ma questo genere di cose è generalmente causato da una ricorrenza troppo profonda. Controllerei la tua sceneggiatura per qualsiasi funzione ricorsiva e mi assicuro che stiano uscendo prima di raggiungere una profondità eccessiva.

È possibile che stiate allocando troppo in pila. Non ho familiarità con AHK, ma è possibile che il compilatore stia allocando una grande quantità di dati (probabilmente variabili locali) nello stack. Se si definisce un numero elevato di variabili locali (o un numero di grandi dimensioni), ciò potrebbe accadere.

È anche possibile che lo stack/memoria sia in qualche modo danneggiato, anche se questo sembra meno probabile quando si utilizza un linguaggio di scripting. Potrebbe essere più probabile accedere all'API nativa da un linguaggio di scripting, a seconda di come è fatto.

L'ultima possibilità che propongo qui è che si sta chiamando un po 'di API e provocando anche l'allocazione di un sacco di spazio nello stack, possibilmente con il passaggio di parametri non validi. Di nuovo, senza conoscere più specifiche (in particolare quello che sta facendo quando colpisce quell'eccezione), è difficile dirlo con certezza.

Posso pensare ad altri motivi, ma sono anche meno probabili.

+1

Grazie! Penso che ri-imprecare troppo profondamente sia il mio problema. – brilliant