Мы столкнулись с нарушением доступа на нашем тестовом компьютере в коде Entity Framework. Мне интересно, может ли это быть связано с ошибкой многопоточности или с большей вероятностью из-за проблем с оборудованием.
Вот частичный стек вызовов:
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Data.Common.Internal.Materialization.CoordinatorFactory`1..ctor(Int32 depth, Int32 stateSlot, Expression hasData, Expression setKeys, Expression checkKeys, CoordinatorFactory[] nestedCoordinators, Expression element, Expression elementWithErrorHandling, Expression initializeCollection, RecordStateFactory[] recordStateFactories)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method, Object[] args, SignatureStruct& signature, RuntimeType declaringType)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at System.Data.Common.Internal.Materialization.CoordinatorScratchpad.Compile()
Это произошло в нашем приложении ASP.NET на IIS 7 (Server 2008 R2 SP1) с использованием Entity Framework 4 для доступа к SQL Server 2008 R2. Я читал о нарушениях доступа с EF и SQL Server CE , но мы используем полный SQL Server. Мы напрямую не взаимодействуем с каким-либо собственным кодом из нашего приложения - нет P / Invoke или COM-взаимодействия.
Это случилось только один раз. Лично я думаю, что это проблема с машиной, а не с приложением ... у машины пару раз был BSOD. Но меня попросили рассмотреть это как возможную ошибку.
Я посмотрю, как настроить DebugDiag, чтобы перехватить это, если это произойдет снова. У кого-нибудь есть другие предложения?
Спасибо,
Ричард