Я сподіваюся, що хтось може просвітити мене щодо того, що могло спричинити цю помилку:
Спроба читати чи записувати захищену пам'ять. Це часто свідчить про те, що інша пам'ять пошкоджена.
Я не можу реально поштовий індекс, оскільки ця помилка, здається, потрапляє в будь-яку випадкову область програми. Додаток запуститься десь 12-48 годин до викиду помилки. Іноді він зупиниться на, здавалося б, випадковому місці і викине вищезгадану помилку, в інший раз вся програма зупиняється, і я отримую екран із помилкою, яка щось говорить за рядком "У цій справі сталася фатальна помилка ... Це може бути помилка в CLR або ... "щось про PInvoke або іншу невідповідну інформацію. Коли це відбувається, усі потоки показуються припиненими, і немає інформації про налагодження.
Коротше кажучи, це робить програма:
Його багатопотокова серверна програма, повністю написана на C #. Клієнти підключаються до сервера через сокет. Сервер виконує віртуальне "середовище" для клієнтів, де вони можуть взаємодіяти між собою та оточенням. Це забирає зовсім небагато пам’яті, але я не бачу, щоб воно просочилося. Зазвичай споживає близько 1,5 ГБ. Я не думаю, що його витік, тому що використання пам'яті залишається відносно постійним весь час роботи програми. Його постійно працює код для підтримки середовища, навіть якщо клієнти нічого не роблять. Він не використовує стороннього програмного забезпечення або інших API. Єдині зовнішні ресурси, якими користується ця програма, - це з'єднання з сокетами та підключення до бази даних SQL. Його працює на 64-бітовому сервері. Я спробував налагодити це у VS2008 та VS2010, використовуючи .net 2.0, 3.5 та 4.
Я спробував вимкнути оптимізацію компілятора та кілька гарячих виправлень Microsoft. Здається, ніщо не змушує цю проблему згасати. Було б вдячно, якщо хтось знає якісь можливі причини чи якийсь спосіб визначити, що спричиняє проблему.