Sto sperando che qualcuno mi può illuminare su cosa potrebbe causare questo errore:Tentativo di leggere o scrivere memoria protetta. Ciò è spesso un'indicazione che l'altra memoria è corrotta
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
non posso davvero scrivere codice, perché questo errore sembra avere gettato in qualsiasi area casuale dell'applicazione. L'applicazione verrà eseguita ovunque tra 12-48 ore prima di generare l'errore. A volte si fermerà in un punto apparentemente casuale e genererà l'errore sopra riportato, altre volte l'intera applicazione si interromperà e visualizzerò uno schermo con un errore che dice qualcosa sulla falsariga di "C'è stato un errore fatale in ... Questo potrebbe essere un errore bug nel CLR o ... "qualcosa su PInvoke o altre informazioni non pertinenti. Quando ciò accade, tutti i thread vengono terminati e non sono disponibili informazioni di debug.
In poche parole questo è ciò che fa la domanda:
sua un'applicazione multi-threaded server di scritto in interamente in C#. I client si connettono al server tramite socket. Il server esegue un "ambiente" virtuale per i clienti in cui possono interagire tra loro e con l'ambiente. Consuma un bel po 'di memoria, ma non vedo perdite. Normalmente consuma circa 1,5 GB. Non penso che perdi perché l'utilizzo della memoria rimane relativamente costante per tutto il tempo in cui l'applicazione è in esecuzione. Il suo codice costantemente in esecuzione per mantenere l'ambiente anche se i client non stanno facendo nulla. Non utilizza software di terze parti o altre API. Le uniche risorse esterne utilizzate da questa applicazione sono le connessioni socket e le connessioni al database SQL. Funziona su un server a 64 bit. Ho provato a debuggare questo in VS2008 & VS2010 utilizzando .net 2.0, 3.5 e 4.0 e su più server e il problema si verifica ancora alla fine.
Ho provato a disattivare le ottimizzazioni del compilatore e diverse correzioni rapide microsoft. Nulla sembra rendere questo problema andare via. Sarebbe gradito se qualcuno conoscesse qualche possibile causa, o un qualche tipo di modo per identificare che cosa causa il problema.
per favore pubblica lo stack completo di chiamate ... –
possibile duplicato di [Risoluzione dei problemi .NET "Errore Fatal Execution Engine"] (http://stackoverflow.com/questions/2823440/troubleshooting-net-fatal-execution-engine- errore) –
Circa la metà delle volte non riesco a ottenere lo stack delle chiamate. Se lancia l'errore di esecuzione fatale non ci sono affatto informazioni di debug. Le volte che in realtà si ferma da qualche parte nel codice, nulla sembra anormale. Ho persino passato tutti i thread attivi e non ho visto nulla che potesse causare un conflitto. Suppongo che la corruzione della memoria sia avvenuta qualche tempo prima che l'errore venisse generato. –