2013-01-17 25 views
23

これをデバッグする方法についてはわかりません。私はC#プログラムを.NET 4.5で動作するマネージドコードだけで構成しています。一見無作為な時間にそれをしばらく実行した後、エラー "mscorlib.dllで 'System.AccessViolationException'型の未処理の例外が発生しました。私は、Visual Studio(2012)からそれを実行していますので、私は「休憩」をクリックし、次のコールスタックを提示しています:私のコードではないアクセス違反

mscorlib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pOVERLAP) + 0x47 bytes  
[Native to Managed Transition] 
[email protected]() + 0xc bytes 
[email protected]() + 0x4f bytes  
[email protected]() + 0x2b bytes  
[email protected]() + 0xf bytes 
[email protected]() + 0x22 bytes 
mdnsNSP.dll!7177aa48() 
[Frames below may be incorrect and/or missing, no symbols loaded for mdnsNSP.dll] 
mdnsNSP.dll!71775b06() 
mdnsNSP.dll!71774ded() 
mdnsNSP.dll!71774e8c() 
bcryptprimitives.dll!746d1159()  
bcryptprimitives.dll!746d1137()  
[email protected]() + 0x14 bytes 
[email protected]() + 0xc bytes 
[email protected]() + 0xc bytes 
[email protected]() + 0x1a bytes 

私が気づく興味深いのは、コールスタック内の何も私のコードではないということです。

私は問題のルートを見つけるためにどのような戦略を使用することをお勧めしますか?またはこれに類似した問題を見て、ヒントをお持ちですか?

例外には自分のコードが含まれていないようですので、質問に答えるのに役立つ情報はわかりませんが、私に含めるべきことが他にあるかどうか尋ねます。

(PerformIOCompletionCallbackがスタックの一番上にあるため)エラーがIO関連するかもしれないので、これは、このアプリケーションが実行する典型的なIOタスクのリストである:

  • TcpListener.AcceptTcpClientAsync
  • NetworkStream。書き込み/ BeginRead/EndRead
  • SqlCommand.BeginExecuteReader/EndExecuteReader
  • StreamWriter.WriteLine

その他の注意事項:

  • 大体再現可能であるように思わ - 私は同じ場所(PerformIOCompletionCallback)で同じエラーを取得しますが、(数分のために)それを得るために、時間の異なる長さを待たなければなりません。
  • 問題を確実に強調する小さなプログラムを製造することはできません。私のプログラムは、このエラーを起こす前に何千もの同様のIO操作を処理します。

編集:

Mdnsnsp.dllはボンジュールからのものであることを@Kevinの提案に基づいて、私はBonjourのをアンインストールして、再度試してみました。例外は解消されないが、コールスタックは非常にきれいです。

mscorlib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pOVERLAP) + 0x47 bytes  
[Native to Managed Transition] 
[email protected]@12() + 0x12 bytes  
[email protected]() + 0x27 bytes 
[email protected]() + 0x1b bytes  

私は、ネットワークトラフィックのためのいくつかの良性のフックDLLをインストールBonjourのインストーラを想定し、それは問題を解決しませんでしたアンインストールしています。

編集:

私は容疑者としてこれを排除するために、より遅い「安全な」同等物を使用して、一時的に再コード化されたすべての私unsafeの機能を持っています。現在、アプリケーションのアセンブリは、安全でないスイッチを使用してコンパイルされていません。問題は依然として続きます。これを繰り返すと、このアプリケーションでは安全でないコード、ネイティブコード、P/Invoke呼び出し(ユーザーコード内)はありませんが、上記のようにAccessViolationExceptionがまだ発生しています。

+0

boot.iniに/ 3GBスイッチが有効になっていますか?私はこのような奇妙なエラーが私が取り組んだシステムで覚えていることを覚えている。私は、使用可能なメモリが減っているため、I/Oを処理するリソースが不足しているという結論に達しました。 –

+3

'安全でない'コードやP/Invokeを使用していますか? |このようなエラーは、ネイティブコードが依然として必要とするバッファを移動させるGCに適合します。 – CodesInChaos

+0

マネージコードが呼び出しているアンマネージコードによって例外がスローされることがあります。 [管理されていないコードのデバッグを有効にする](http://msdn.microsoft.com/en-us/library/vstudio/tdw0c6sf%28v=vs.100%29.aspx)を解凍し、プログラムのデバッグを試みます。 – keyboardP

答えて

1

debugdiagを使用して、マシン上でAccessViolationExceptionの原因を調べることができます。プロセスのクラッシュ・ルールを構成し、ダンプおよびログ・ファイルを調べます。私はあなたがそのようにその件に関するより多くの情報を得ることを願っています。また、マシンに最新のwindows update bcosを実行させてください。CLRバージョンのセキュリティアップデートで解決された同様の問題がありました。

2

あなたを助けることができるかどうかは分かりませんが、数年前に同様の問題に直面したようです。私たちの調査では、他のプログラムでdllを指摘したことを覚えています。私たちは、メモリアクセス違反がウイルス対策(私たちの場合はNOD32)、ファイアウォール、またはネットワークスニファ/トラフィックコントローラによって引き起こされる可能性があることを発見しました。

上記のアプリケーションによって発生したエラーについては、アプリケーションログ(コントロールパネル - >システムとセキュリティ - >管理ツール - >イベントビューア)を確認してください。他のプログラムに問題がある場合は、そのプログラムを無効にしてアンインストールし、プログラムにクラッシュが表示されていないか再度確認してください。

UPDクリーンテスト環境でこの問題を再現しようとしましたか?

+0

クリーンなテスト環境をセットアップする時間がありません。しかし、私はそれがデバッガが接続されているときに発生するように見えることがあります。 – Mike

3

エラーを引き起こしているPerformIOCompletionCallback以降、私はあなたの非同期IOコールを調べます。

  • TcpListener.AcceptTcpClientAsync
  • NetworkStream.Write/BeginRead/EndRead
  • SqlCommand.BeginExecuteReader/EndExecuteReader
  • エラーが登録されたハンドルはもはや有効ではないので起こっされるように見えます

。マネージドコードで発生しているので、原因はManagedオブジェクトであり、サードパーティ製のネイティブDLLではありません。

+0

「ハンドル」とはどういう意味ですか? Windowsのオブジェクトハンドルを参照している場合は、.netフレームワークが私にチェックする必要がありますか?私は「サードパーティのネイティブDLL」を持っていないので、それが問題であるとは決して疑いませんでした。 – Mike

+0

シャンプーが意味することの例...閉じられた/廃棄された開かれたポートの読み書きストリームは、これを引き起こす可能性があります。また、非同期コールバックを使用すると、EndXxxxが呼び出されるまでのエラーはすべて遅延されます... – andrew

関連する問題