最近,它开始时不时地抛出System.AccessViolationException,在我的开发机器中,主要是当我离开机器时……
我几周没有更改服务器代码上的任何内容,因为我一直在Javascript部分工作100%,这个错误最近开始出现.
此外,我正在做的代码是100%管理.我没有做任何互操作,调用奇怪的DLL,什么都没有.它是纯粹的VB.Net,所以我看不出自己如何生成其中一个……
现在,我已经使用这台新机器几个月了,而且它不能100%正常工作.每隔2或3天我会得到一个蓝屏.我没有时间正确诊断它,但我怀疑我可能有一个错误的RAM芯片.
有故障的RAM是否可能导致AccessViolationException?
或者我是否有一个我应该研究的实际问题? (除了我的RAM)
更新:
我真的无法找到错误发生的地方.
我得到“未处理的异常,你想调试吗?”对话框,当我附加调试器时,我有Threads列表,我有所有ASP.Net线程,3我自己创建.
对于这3个我有一个调用堆栈,它们都在Sleep()调用停止(这是可以预期的).
对于所有其他线程,包括VS指向的那个线程,我没有调用堆栈.我也没有任何有关例外的细节.
所以我不知道它是否每次都在同一个地方发生.
至于memtest,是的,我会做那样的事情,我只是希望有一些时间尽快完成,但我想知道,与此同时,这是否可以解释这个问题.
更新2:
在事件日志中找到了…
发生了未处理的异常,并终止了该过程.
Application ID: DefaultDomain Process ID: 6632 Exception: System.AccessViolationException Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. StackTrace: at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus) at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
有什么想法可以做到这一点?
谢谢
丹尼尔
是的,这是可能的.如果进程的底层内存不能以可预测的方式运行,则可能会导致许多不同类型的应用程序错误,包括AccessViolationException.
是否有错误的RAM导致AccessViolationException?
我会说你调用的程序或库中的错误更有可能是错误的.第一步是找出发生AccessViolationException的原因或更重要的原因.尝试附加调试器,中断AccessViolationExceptions并查看实际发生的情况.
Ben S的建议也很好,可以快速排除RAM情况.