Я надеюсь, что кто-нибудь сможет объяснить мне, что могло вызвать эту ошибку:
Попытка прочитать или записать в защищенную память. Это часто указывает на то, что другая память повреждена.
Я не могу опубликовать код, потому что эта ошибка, кажется, возникает в любой случайной области приложения. Приложение будет работать от 12 до 48 часов, прежде чем выдаст ошибку. Иногда он останавливается в, казалось бы, случайном месте и выдает указанную выше ошибку, в других случаях все приложение останавливается, и я получаю экран с ошибкой, в которой говорится что-то вроде «Произошла фатальная ошибка в ... Это может быть ошибка в CLR или ... "что-то о PInvoke или другой нерелевантной информации. Когда это происходит, все потоки отображаются как завершенные и нет доступной отладочной информации.
Вкратце, это то, что делает приложение:
Это многопоточное серверное приложение, полностью написанное на C #. Клиенты подключаются к серверу через сокет. Сервер запускает виртуальную «среду» для клиентов, где они могут взаимодействовать друг с другом и со средой. Он потребляет довольно много памяти, но я не вижу утечки. Обычно он занимает около 1,5 ГБ. Я не думаю, что это утечка, потому что использование памяти остается относительно постоянным на протяжении всего времени работы приложения. Его постоянно работающий код для поддержки среды, даже если клиенты ничего не делают. Он не использует стороннее программное обеспечение или другие API. Единственные внешние ресурсы, которые использует это приложение, - это соединения сокетов и соединения с базой данных SQL. Он работает на 64-битном сервере. Я пробовал отлаживать это в VS2008 и VS2010, используя .net 2.0, 3.5 и 4.
Я пробовал отключить оптимизацию компилятора и несколько исправлений Microsoft. Кажется, ничего не решает эту проблему. Было бы признательно, если бы кто-нибудь знал какие-либо возможные причины или какой-либо способ определить причину проблемы.