J'espère que quelqu'un pourra m'éclairer sur la cause de cette erreur:
Tentative de lecture ou d'écriture de la mémoire protégée. Cela indique souvent qu'une autre mémoire est corrompue.
Je ne peux pas vraiment publier de code car cette erreur semble être lancée dans une zone aléatoire de l'application. L'application s'exécutera entre 12 et 48 heures avant de générer l'erreur. Parfois, il s'arrête à un endroit apparemment aléatoire et lance l'erreur ci-dessus, d'autres fois, toute l'application s'arrête et j'obtiens un écran avec une erreur qui dit quelque chose du genre "Il y a eu une erreur fatale dans ... Cela peut être un bug dans le CLR ou ... "quelque chose à propos de PInvoke ou d'autres informations non pertinentes. Lorsque cela se produit, tous les threads sont terminés et aucune information de débogage n'est disponible.
En un mot, voici ce que fait l'application:
C'est une application serveur multi-thread écrite entièrement en C #. Les clients se connectent au serveur via socket. Le serveur exécute un «environnement» virtuel pour les clients dans lequel ils peuvent interagir entre eux et avec l'environnement. Il consomme pas mal de mémoire mais je ne vois pas de fuite. Il consomme généralement environ 1,5 Go. Je ne pense pas que cela fuit car l'utilisation de la mémoire reste relativement constante pendant tout le temps que l'application est en cours d'exécution. Son code est constamment en cours d'exécution pour maintenir l'environnement même si les clients ne font rien. Il n'utilise aucun logiciel tiers ni aucune autre API. Les seules ressources externes utilisées par cette application sont les connexions de socket et les connexions de base de données SQL. Il fonctionne sur un serveur 64 bits. J'ai essayé de déboguer ceci dans VS2008 et VS2010 en utilisant .net 2.0, 3.5 et 4.
J'ai essayé de désactiver les optimisations du compilateur et plusieurs correctifs de Microsoft. Rien ne semble faire disparaître ce problème. Il serait apprécié que quelqu'un connaisse les causes possibles ou une sorte de moyen d'identifier ce qui cause le problème.