Espero que alguien pueda aclararme qué podría estar causando este error:
Intento de leer o escribir en la memoria protegida. Esto es a menudo una indicación de que otra memoria está corrupta.
Realmente no puedo publicar código porque este error parece aparecer en cualquier área aleatoria de la aplicación. La aplicación se ejecutará entre 12 y 48 horas antes de arrojar el error. A veces se detendrá en un lugar aparentemente aleatorio y arrojará el error anterior, otras veces la aplicación completa se detiene y aparece una pantalla con un error que dice algo como "Hubo un error fatal en ... Esto puede ser un error en el CLR o ... "algo sobre PInvoke u otra información no relevante. Cuando esto sucede, todos los hilos se muestran terminados y no hay información de depuración disponible.
En pocas palabras, esto es lo que hace la aplicación:
Es una aplicación de servidor multiproceso escrita completamente en C #. Los clientes se conectan al servidor a través del socket. El servidor ejecuta un "entorno" virtual para los clientes donde pueden interactuar entre sí y con el entorno. Consume bastante memoria pero no lo veo goteando. Por lo general, consume alrededor de 1,5 GB. No creo que tenga fugas porque el uso de memoria permanece relativamente constante todo el tiempo que la aplicación se está ejecutando. Su código se ejecuta constantemente para mantener el entorno incluso si los clientes no están haciendo nada. No utiliza software de terceros u otras API. Los únicos recursos externos que utiliza esta aplicación son las conexiones de socket y las conexiones de bases de datos SQL. Se ejecuta en un servidor de 64 bits. He intentado depurar esto en VS2008 y VS2010 usando .net 2.0, 3.5 y 4.
He intentado desactivar las optimizaciones del compilador y varias revisiones de Microsoft. Nada parece hacer que este problema desaparezca. Se agradecería si alguien conoce alguna causa posible, o algún tipo de forma de identificar cuál es la causa del problema.