当前位置:  开发笔记 > 编程语言 > 正文

尝试读取或写入受保护的内存

如何解决《尝试读取或写入受保护的内存》经验,为你挑选了3个好方法。

我已经开始看到一个AccessViolationException被我的应用程序抛出了几个不同的位置.它从未出现在我的开发PC上,我们的测试服务器上.它也仅在我们的2个生产服务器中的一个上显示出来.因为它似乎只发生在我们的一个生产服务器上,所以我开始在服务器上查看已安装的.net框架版本.


我发现(出于一些奇怪的原因),出现问题的生产服务器有2.0 sp2,3.0 sp2和3.5 sp1,而另一个生产服务器和测试服务器有2.0 sp1.


我的应用程序仅针对2.0框架,决定从生产服务器卸载所有框架版本并仅安装2.0 sp1.到目前为止,我还没有能够重现这个问题.很有意思.

开发pc:紧凑型2.0 sp2,紧凑型3.5,2.0 sp2,3.0 sp2,3.5 sp1测试服务器:2.0 sp1生产服务器1:2.0 sp1生产服务器2:2.0 sp2,3.0 sp2,3.5 sp1

现在,为什么我无法重现问题我的开发pc上有2.0 sp2,我想不出来.我听说有传言说这种访问违规可能发生在一些使用远程处理的软件上,我的确如此,但是当实际进行远程处理时,访问冲突永远不会发生.我现在只使用2.0 sp1,但我真的很想知道是否有人遇到过这个问题,如果他们找到了更新版本的frameowork的解决方法.

这里有几个例外和它们的堆栈跟踪:

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at ICSharpCode.TextEditor.TextArea.HandleKeyPress(Char ch)
   at ICSharpCode.TextEditor.TextArea.SimulateKeyPress(Char ch)
   at ICSharpCode.TextEditor.TextArea.OnKeyPress(KeyPressEventArgs e)
   at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
   at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
   at System.Windows.Forms.Control.WmKeyChar(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
   at System.Windows.Forms.Control.DefWndProc(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.TextBoxBase.WndProc(Message& m)
   at System.Windows.Forms.RichTextBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

小智.. 13

我有同样的问题.2.0工作正常.安装最多3.5 sp1后,应用程序将获得访问冲突.

已安装http://support.microsoft.com/kb/971030并解决了我的问题,即使我没有使用LCG.



1> 小智..:

我有同样的问题.2.0工作正常.安装最多3.5 sp1后,应用程序将获得访问冲突.

已安装http://support.microsoft.com/kb/971030并解决了我的问题,即使我没有使用LCG.


你有这个修补程序下载的直接链接?该页面说我们需要联系Microsoft支持,但没有任何下载链接.

2> Cocowalla..:

从.NET 4.5升级到.NET 4.5.1后,我遇到了同样的问题.为我修复的是运行此命令:

netsh winsock reset


我知道这是一个很长的休眠线程,但是到底是什么促使您尝试这样做呢?在难以捕获内存转储以进行调试的情况下,我偶尔会偶尔看到此异常。如果您看到此消息并获得一些信息,请先谢谢!

3> Ash..:

微软还发布了一个修补程序(2007年7月2日),以防止一直困扰.NET 2.0平台的错误"试图读取或写入受保护的内存".请查看http://support.microsoft.com/kb/923028 - 不确定它是否适用于您,但您认为可能需要查看它.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有