title: Why does concurrent GC sometimes cause ExecutionEngineException (per MSDN)?
body: <p>According to <a href="http://msdn.microsoft.com/en-us/library/system.executionengineexception.aspx">MSDN</a>, there is a "tip" stating that a .NET application running under heavy load with concurrent garbage collection (either <code>&lt;gcConcurrent enabled="true"/&gt;</code> or unspecified, since it's the default behavior) may throw an ExecutionEngineException. Is anyone aware of a Microsoft KB article or other source that provides additional background on this?</p>
  
  <p>We have experienced this directly with an NHibernate 3.2-based Windows Service application, which will invariably crash after at most a few hours of operation. We were able to track down the exception to the ISession.Flush() call.</p>
  
  <p>There's a <a href="http://groups.google.com/group/nhusers/browse_thread/thread/e4928b8c5733754d">thread</a> on nhusers reporting what appears to be the same problem. His suggested workaround, which was to disable concurrent GC, has worked for us so far, although switching to server-mode GC (<code>&lt;gcServer enable="true"/&gt;</code>), which implicitly disables concurrent GC, also did the trick. </p>
  
  <p>Before submitting this to MS as a bug, I'd like to find out if anyone out there has additional information on the concurrent GC instablity that the tip mentions.</p>