Согласно MSDN, есть "подсказка" о том, что приложение .NET работает под большой нагрузкой с одновременной сборкой мусора (либо <gcConcurrent enabled="true"/>
, либо неопределенным, поскольку это поведение по умолчанию) может вызвать исключение ExecutionEngineException. Кто-нибудь знает статью Microsoft KB или другой источник, который предоставляет дополнительные сведения об этом?
Мы испытали это непосредственно с помощью приложения Windows Service, работающего под управлением NHibernate 3.2, которое, как правило, будет аварийно завершено после нескольких часов работы. Мы смогли отслеживать исключение для вызова ISession.Flush().
Там thread сообщается о том, что похоже на ту же проблему. Его предлагаемый метод обхода, который должен был отключить параллельный GC, до сих пор работал на нас, хотя переход на GC-серверный режим (<gcServer enable="true"/>
), который неявно отключает одновременный GC, также сделал трюк.
Прежде чем передать это MS в качестве ошибки, я хотел бы узнать, есть ли у кого-то дополнительная информация о параллельной GC-неустойчивости, о которой упоминает наконечник.