Mam nadzieję, że ktoś może mnie oświecić, co może być przyczyną tego błędu:
Podjęto próbę odczytania lub zapisu chronionej pamięci. Często wskazuje to na uszkodzenie innej pamięci.
Naprawdę nie mogę wysłać kodu, ponieważ ten błąd wydaje się być wyrzucany w dowolnym przypadkowym obszarze aplikacji. Aplikacja będzie działać w dowolnym miejscu od 12 do 48 godzin przed zgłoszeniem błędu. Czasami zatrzyma się w pozornie przypadkowym miejscu i wyrzuci powyższy błąd, innym razem cała aplikacja zatrzymuje się i pojawia się ekran z błędem, który mówi coś w rodzaju „Wystąpił błąd krytyczny w ... To może być błąd w CLR lub ... "coś o PInvoke lub inne nieistotne informacje. W takim przypadku wszystkie wątki są zakończone i nie ma dostępnych informacji o debugowaniu.
W skrócie to, co robi aplikacja:
Jest to wielowątkowa aplikacja serwerowa napisana w całości w języku C #. Klienci łączą się z serwerem przez gniazdo. Na serwerze działa wirtualne „środowisko” dla klientów, w którym mogą oni współdziałać ze sobą i ze środowiskiem. Zużywa sporo pamięci, ale nie widzę przecieków. Zwykle zużywa około 1,5 GB. Nie sądzę, żeby przeciekał, ponieważ użycie pamięci pozostaje względnie stałe przez cały czas działania aplikacji. Jego stale działający kod, aby utrzymać środowisko, nawet jeśli klienci nic nie robią. Nie używa oprogramowania innych firm ani innych interfejsów API. Jedynymi zewnętrznymi zasobami, z których korzysta ta aplikacja, są połączenia gniazd i połączenia z bazą danych SQL. Działa na serwerze 64-bitowym. Próbowałem debugować to w VS2008 i VS2010 przy użyciu .net 2.0, 3.5 i 4.
Próbowałem wyłączyć optymalizacje kompilatora i kilka poprawek Microsoft. Wydaje się, że nic nie usuwa tego problemu. Byłoby docenione, gdyby ktoś znał jakiekolwiek możliwe przyczyny lub jakiś sposób na zidentyfikowanie przyczyny problemu.