猿问

尝试读取或写入受保护的内存。这通常表明其他内存已损坏

我希望有人能启发我有关可能导致此错误的原因:

尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

我无法真正发布代码,因为此错误似乎在应用程序的任何随机区域中引发。该应用程序将在引发错误之前的12-48小时内运行。有时它将停止在看似随机的位置并引发上述错误,而有时整个应用程序都停止了,并且屏幕出现错误,提示“在...中存在致命错误”。 CLR中的错误或...”有关PInvoke的信息或其他不相关的信息。发生这种情况时,所有线程均显示已终止,并且没有可用的调试信息。

简而言之,这就是应用程序的作用:

它是一个完全用C#编写的多线程服务器应用程序。客户端通过套接字连接到服务器。服务器为客户端运行一个虚拟的“环境”,客户端可以在其中彼此交互并与环境交互。它消耗了大量内存,但我看不到它在泄漏。它通常消耗约1.5GB。我不认为其泄漏是因为在整个应用程序运行期间内存使用率保持相对恒定。即使客户端没有执行任何操作,它仍在不断运行的代码可以维护环境。它不使用任何第三方软件或其他API。该应用程序使用的唯一外部资源是套接字连接和SQL数据库连接。它运行在64位服务器上。我已经尝试使用.net 2.0、3.5和4在VS2008和VS2010中对此进行调试。

我尝试关闭编译器优化和几个Microsoft修补程序。似乎没有什么可以解决这个问题。如果有人知道任何可能的原因,或某种方式识别导致问题的原因,将不胜感激。


慕无忌1623718
浏览 3866回答 3
3回答

交互式爱情

我刚刚在带有MapInfo DLL的VS 2013 .NET 4.5中遇到了此问题。原来,问题是我将构建平台从x86更改为Any CPU,足以触发此错误。把它改回x86就可以了。可能会帮助某人。

largeQ

最终在WinDBG和SOS的帮助下进行了跟踪。某些未知的DLL引发访问冲突。原来是一个名为“ Nvidia Network Manager”的软件引起了该问题。我已经读过无数次有关防火墙或防病毒引起的问题的信息,而我都没有使用它们,所以我拒绝了这个想法。另外,我还假设它不是环境的,因为它发生在使用不同硬件的多于一台服务器上。原来我测试过的所有机器都运行“ NVidia Network Manager”。我相信它会与其余的主板驱动程序一起安装。希望这对某人有所帮助,因为这个问题困扰了我很长时间的应用程序。

偶然的你

我在Visual Studio 2010中也遇到了这个问题。更有趣的是,我的解决方案中有几个项目(控制台应用程序,WPF应用程序,Windows窗体应用程序),但是只有在我设置了“控制台应用程序”类型的项目时,它才会失败”作为启动项目(即使对于那些实际上没有代码或项目模板本身附带的默认程序集没有引用的任何其他程序集的程序而言)。进行更改后,最终使我确定了问题所在:转到控制台应用程序项目的项目属性->转到Debug选项卡->转到Enable Debuggers右窗格中的部分->选中Enable unmanaged code debugging复选框,如下面的快照所示。我为什么还不知道为什么会发生这种情况的根本原因。我观察到的唯一一件事是,前一天晚上在我的计算机上安装了许多Windows更新,这些更新主要由Office更新和OS更新组成(有十几篇KB文章)。
随时随地看视频慕课网APP
我要回答