RAMの障害が原因でSystem.AccessViolationExceptionが発生することはありますか?
-
22-07-2019 - |
質問
私は現在約1年間取り組んでいるWebサイトを持っています。 最近では、ほとんどの場合、開発マシンでSystem.AccessViolationExceptionをスローし始めました。マシンから離れていたときです...
Javascript部分に100%取り組んでいるので、サーバーコードを何週間も変更していません。このエラーは最近発生し始めました。
また、私がしているコードは100%管理されています。相互運用を行っておらず、奇妙なDLLを呼び出していますが、何もしていません。それは純粋なVB.Netなので、これらの1つを自分でどのように生成できるかわかりません...
今、私はこの新しいマシンを数ヶ月使用していますが、100%正しく動作していません。たとえば、2、3日ごとにブルースクリーンが表示されます。適切に診断する時間はありませんでしたが、RAMチップに欠陥があるのではないかと疑っています。
RAMの障害によりAccessViolationExceptionが発生する可能性はありますか?
または、私が探しているべき実際の問題がありますか? (RAM以外)
更新:
実際にエラーが発生した場所を見つけることができません。
「未処理の例外が発生しました。デバッグしますか?」ダイアログ、およびデバッガーをアタッチすると、すべての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)
これをどうすればよいか?
ありがとう
ダニエル
解決
RAMの障害によりAccessViolationExceptionが発生する可能性はありますか?
はい、これは可能です。プロセスの基になるメモリが予測どおりに動作していない場合、はい、AccessViolationExceptionを含む多くの異なるタイプのアプリケーション障害につながる可能性があります。
RAMの不良がAccessViolationExceptionを引き起こしている可能性は高いですか?
私は、あなたが呼び出すプログラムまたはライブラリの障害が障害である可能性が高いと考えています。ただし、最初のステップは、AccessViolationExceptionが発生した理由またはさらに重要な場所を見つけることです。デバッガーを接続してみて、AccessViolationExceptionsを中断して、実際に何が起こっているのかを確認してください。
また、Ben Sの提案は、RAMケースを迅速に除外するのに適しています。
他のヒント
RAMの欠陥について疑問がある場合は、 memtest86 を実行してください。
ただし、同じ呼び出しで常にエラーが発生する場合は、おそらくRAMではありません。
これは開発マシンでのみ発生しますか? 「はい」の場合、障害のあるRAM /ハードディスク(ページファイル)が非常に可能性があります。ライブラリの1つ(おそらくネイティブイメージDLLの1つ)が破損した場合に.NET Frameworkを再インストールすることもできます。
簡単に言えば:
毎回コードの異なるセクションでエラーが発生する場合、それはシステム全体に何か問題があることを示す良い指標です。
一方、同じコード部分でエラーが繰り返し発生する場合、ほぼ間違いなくそのコード部分に問題があります。
前の回答で指摘したように、Memtest86 +を使用して、メモリが良好かどうかを確認します。