我希望有人能启发我有关可能导致此错误的原因:
尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
我无法真正发布代码,因为此错误似乎在应用程序的任何随机区域中引发。该应用程序将在引发错误之前的12-48小时内运行。有时它会在看似随机的位置停止并引发上述错误,而其他时候整个应用程序都停止了,并且我得到一个屏幕错误,该错误的内容大致上是“ ...中存在致命错误……这可能是CLR中的错误或...”有关PInvoke的信息或其他不相关的信息。发生这种情况时,所有线程均显示已终止,并且没有可用的调试信息。
简而言之,这就是应用程序的作用:
它是一个完全用C#编写的多线程服务器应用程序。客户端通过套接字连接到服务器。服务器为客户端运行一个虚拟的“环境”,使客户端可以相互与环境进行交互。它消耗了大量内存,但我看不到它在泄漏。它通常消耗约1.5GB。我不认为其泄漏是因为在整个应用程序运行期间内存使用率保持相对恒定。即使客户没有做任何事情,它仍在不断运行的代码可以维护环境。它不使用任何第三方软件或其他API。此应用程序使用的唯一外部资源是套接字连接和SQL数据库连接。它运行在64位服务器上。我已经尝试使用.net 2.0、3.5和4在VS2008和VS2010中对此进行调试。
我尝试关闭编译器优化和几个Microsoft修补程序。似乎没有什么可以解决这个问题。如果有人知道任何可能的原因,或某种方式识别导致问题的原因,将不胜感激。