In base a MSDN, esiste un "suggerimento" che indica che un'applicazione .NET in esecuzione con carico pesante con garbage collection simultanea (o <gcConcurrent enabled="true"/>
o non specificata, poiché è il comportamento predefinito) può lanciare un'eccezioneExecutionEngineException. Qualcuno è a conoscenza di un articolo di Microsoft KB o di un'altra fonte che fornisce ulteriori informazioni su questo?Perché il GC simultaneo causa talvolta ExecutionEngineException (per MSDN)?
Abbiamo sperimentato questo direttamente con un'applicazione di servizio Windows basata su NHibernate 3.2, che invariabilmente si interromperà dopo al massimo poche ore di funzionamento. Siamo stati in grado di rintracciare l'eccezione alla chiamata ISession.Flush().
C'è un thread su nhuzi che riportano quello che sembra essere lo stesso problema. La sua soluzione suggerita, che era quella di disabilitare il GC simultaneo, ha funzionato fino ad ora per noi, anche se il passaggio a GC in modalità server (<gcServer enable="true"/>
), che disabilita implicitamente il GC simultaneo, ha fatto anche il trucco.
Prima di inviare questo a MS come un bug, vorrei scoprire se qualcuno là fuori ha ulteriori informazioni sulla instabilità concomitante di GC che il suggerimento menziona.
Dato che è documentato, è probabile che il bug venga chiuso come "Per progetto". A parte questo, domanda interessante. – vcsjones
@Nick Jones: la documentazione di .NET 4.0 lo elenca anche come obsoleto e afferma che il runtime non genera più questa eccezione. – casperOne
@casperOne: noto, ma NH 3.2 è compilato su .NET 3.5. –