Нарушение прав доступа в коде Entity Framework при доступе к SQL Server - PullRequest
0 голосов
/ 25 июля 2011

Мы столкнулись с нарушением доступа на нашем тестовом компьютере в коде 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, чтобы перехватить это, если это произойдет снова. У кого-нибудь есть другие предложения?


Спасибо,
Ричард

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Я думаю, что вы, вероятно, правы, я предполагаю, что в том же рабочем процессе выполнялся какой-то другой код, вызвавший некоторое повреждение памяти, которое привело к этой ошибке.

Если есть другие приложения, работающие вэтот рабочий процесс, вы можете захотеть посмотреть на разделение этого приложения на выделенного работника.Кроме этого, я бы отнес это к категории «давайте просто следить».

0 голосов
/ 14 марта 2015

Обновление до .NET 4.5.2 исправило аналогичную проблему для нас, которая возникала при вызове виртуальной функции в EF6 и других местах.

https://entityframework.codeplex.com/workitem/2430

https://connect.microsoft.com/VisualStudio/feedback/details/825555/accessviolationexception-in-sqlconnection

https://ucuuba.wordpress.com/2014/08/25/ef-system-accessviolationexception/

...