3

私は約1年間取り組んできたWebサイトを持っています。最近、私の開発マシンで System.AccessViolationException が時々スローされ始めました。ほとんどの場合、マシンから離れていたときに...

Javascript 部分で 100% 作業して以来、サーバー コードは何週間も変更していませんが、最近このエラーが発生し始めました。

また、私が行っているコードは 100% 管理されています。私は相互運用を行っておらず、奇妙な DLL を呼び出していますが、何もしていません。これは純粋な VB.Net であるため、これらのいずれかを自分で生成する方法がわかりません...

さて、私はこの新しいマシンを数か月使用していますが、100% 正しく動作していません。たとえば、2、3日ごとにブルースクリーンが表示されます。適切に診断する時間はありませんでしたが、RAM チップに問題があるのではないかと疑っています。

障害のある RAM が AccessViolationException につながる可能性はありますか?
それとも、調査すべき実際の問題がありますか? (私のRAM以外に)


アップデート:

エラーが発生した場所を実際に見つけることができません。
「未処理の例外、デバッグしますか?」というメッセージが表示されます。ダイアログを開き、デバッガーをアタッチすると、すべての ASP.Net スレッドが含まれるスレッド リストが表示され、自分で作成した 3 つのスレッドが表示されます。
これらの 3 つについては、 Call Stack があり、それらはすべて 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)

これをどうするかについてのアイデアはありますか?
ありがとう
ダニエル

4

3 に答える 3

3

障害のある RAM が AccessViolationException につながる可能性はありますか?

はい、これは可能です。プロセスの基盤となるメモリが予測どおりに動作していない場合、AccessViolationException を含むさまざまな種類のアプリケーション エラーが発生する可能性があります。

障害のある RAM が AccessViolationException につながる可能性はありますか?

呼び出すプログラムまたはライブラリの障害が原因である可能性がはるかに高いと思います。ただし、最初のステップは、AccessViolationException が発生している理由、またはさらに重要な場所を見つけることです。デバッガーをアタッチし、AccessViolationExceptions でブレークして、実際に何が起こっているかを確認してください。

また、Ben S の提案は、RAM のケースを迅速に除外するのに適しています。

于 2009-09-18T14:24:57.227 に答える
2

これは開発マシンでのみ発生しますか?はいの場合、RAM /ハードディスク(ページファイル)に障害がある可能性があります。ライブラリの1つ(おそらくネイティブイメージDLLの1つ)が破損した場合に備えて、.NETFrameworkを再インストールすることもできます。

簡単に言えば:

毎回コードのさまざまなセクションでエラーが発生する場合は、システム全体に問題があることを示す良い指標です。

一方、同じコードでエラーが繰り返し発生する場合は、ほぼ間違いなく、そのコードに問題があります。

前の回答で述べたように、Memtest86 +を使用して、メモリが良好かどうかを確認します。

于 2009-09-18T14:27:47.597 に答える
2

RAM の故障が疑わしい場合は、memtest86を実行してください。

ただし、同じ呼び出しで常にエラーが発生する場合は、おそらく RAM ではありません。

于 2009-09-18T14:21:50.833 に答える