Попытка чтения или записи в защищенную память - PullRequest
36 голосов
/ 27 февраля 2009

Я начал видеть исключение AccessViolationException в моем приложении в нескольких разных местах. Это никогда не происходило на моем компьютере разработчика, нашем тестовом сервере. Это также проявилось только на 1 из 2 наших производственных серверов. Так как это происходило только на одном из наших производственных серверов, я начал смотреть версии установленных .net framework на серверах.


Я обнаружил, что (по какой-то странной причине) рабочий сервер, у которого были проблемы, имел 2.0 sp2, 3.0 sp2 и 3.5 sp1, в то время как другой рабочий сервер и тестовый сервер имели 2.0 sp1.


Мое приложение предназначено только для платформы 2.0, решило удалить все версии платформы с рабочего сервера и установить только 2.0 sp1. До сих пор я не смог воспроизвести проблему. Очень интересно.

ПК разработчика: компакт 2.0, sp2, компакт 3.5, 2.0 sp2, 3.0 sp2, 3.5 sp1 Тестовый сервер: 2.0 sp1 Производственный сервер1: 2.0 sp1 Рабочий сервер2: 2.0 sp2, 3.0 sp2, 3.5 sp1

Теперь, почему я не могу воспроизвести проблему на моем компьютере разработчика, на котором есть 2.0 sp2, я не могу понять. Я слышал слухи о том, что это нарушение доступа может произойти на некоторых программах, использующих удаленное взаимодействие, что и у меня, но нарушение доступа никогда не происходит, когда удаленное взаимодействие действительно происходит. Сейчас я в порядке с использованием только 2.0 sp1, но мне действительно интересно знать, если у кого-то была эта проблема, и нашли ли они обходной путь для более новых версий frameowork.

Вот пара исключений и их трассировка стека:

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at ICSharpCode.TextEditor.TextArea.HandleKeyPress(Char ch)
   at ICSharpCode.TextEditor.TextArea.SimulateKeyPress(Char ch)
   at ICSharpCode.TextEditor.TextArea.OnKeyPress(KeyPressEventArgs e)
   at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
   at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
   at System.Windows.Forms.Control.WmKeyChar(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
   at System.Windows.Forms.Control.DefWndProc(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.TextBoxBase.WndProc(Message& m)
   at System.Windows.Forms.RichTextBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Ответы [ 13 ]

0 голосов
/ 06 октября 2016

В моем случае шрифты, используемые в одной из общих библиотек, не были установлены в системе.

0 голосов
/ 10 июня 2016

В моем случае это было исправлено, когда я установил «Включить 32-битные приложения» = True для пула приложений на сервере IIS.

0 голосов
/ 20 октября 2015

Привет Есть две возможные причины.

  1. У нас есть неуправляемый код, и мы вызываем его из управляемого кода. что мешает запустить этот код. попробуйте выполнить эти команды и перезагрузите компьютер

    cmd: netsh winsock reset

открыть cmd.exe и запустить команду "netsh winsock reset catalog"

  1. Антивирус считает неуправляемый код вредным и ограничивает запуск этого кода. отключить антивирус и затем проверить
...