В нашем приложении возникает странная фатальная ошибка System.AccessViolationException. Мы видим это, поскольку настроили событие AppDomain.CurrentDomain.UnhandledException для регистрации исключения.
Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Bootstrap.Run() in e:\build-dir\src\Bootstrap.cs:line 25
Само исключение, похоже, не содержит больше информации, чем сообщение «Попытка прочитать или записать защищенную память. Это часто указывает на то, что другая память повреждена ».
ОБНОВЛЕНИЕ
stacktrace ничего не говорит Вам :-(. Можно ли обновить пакеты для наблюдения, если исключения не стало? Я видел Систему. AccessViolationException ни с Одним - Ориентированные на многопотоковое исполнение Com-объекты при доступе к Свойствам от workerthread. Таким образом да, я могу предположить, что исключение вызывается при помощи более ранней неориентированной на многопотоковое исполнение версии от некоторого API.
я справился с ситуацией путем добавления Атрибуты
[HandleProcessCorruptedStateExceptions]
[SecurityCritical]
к Методу, в котором я получаю доступ к этим конфликтующим Свойствам от COM-объекта. Также я должен был добавить
<legacyCorruptedStateExceptionsPolicy enabled="true" />
Установка на мой app.config и был, чем способный поймать эти Исключения и дескриптор мудро.
[еще 119] информация Поврежденные Исключения состояния Документы MS Путем обрабатывания Поврежденных Исключений состояния и не закрывают процесс, Вы оставляющий путь, где "CLR предлагает некоторые довольно сильные гарантии о безопасности правильности и памяти программы".