毎日実行するようにスケジュールされたWindowsアプリケーションがあり、EventViewerの次のログのために断続的に失敗します。
Faulting application name: MyApplication.exe, version: 1.0.0.0, time stamp: 0x4d54829a
Faulting module name: clr.dll, version: 4.0.30319.1, time stamp: 0x4ba21eeb
Exception code: 0xc0000005
Fault offset: 0x00000000000029e1
Faulting process id: 0xbb1c
Faulting application start time: 0x01cbd99223d8b4eb
Faulting application path: E:\MyApplication\MyApplication.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Report Id: 7e74ec7e-45a5-11e0-a95d-003048de380d
2番目のEventViewerログには次のように記載されています。
The process was terminated due to an internal error in the .NET Runtime at IP 000007FEF97329E1 (000007FEF9730000) with exit code 80131506.
サーバーはWin Server 2008 R2であり、アプリケーションは.Net 4.0を使用します(エラーログでも確認できます)。
アプリケーションはマルチスレッドを集中的に使用し、リモートデータベースから読み取り、ローカルハードディスクに書き込みます。
この問題の原因についての推測や、調査方法の助けはありますか? 5〜10時間程度のアプリケーションの寿命のどこで失敗するかはわかりません。
ホットフィックスはほとんど消滅し、同様の問題に直面したため、ここで回答を共有します。
私の解決策は、ラムダをP/Invokeに渡すという事実を中心に展開しました。
私は同じ問題を抱えています。アプリケーションの寿命が約8〜10時間になると、CLRエラーが増加します。バックグラウンドスレッドでアンマネージコードが例外を生成している疑いがあります。しかし、私は本当に理由を見つけることができませんでした。ただし、次のことを試すことができます。
解決策が見つかった場合はお知らせください。
私は同様の問題を抱えていたので、これは将来のユーザーが解決策を見つけるのに役立ちます:
アプリケーションログにはApache log4netを使用します。
DLLバージョン1.2.15の更新後、ドットネットFramwork 4.5の場合、ログファイルが最大サイズ(10MB)に達すると、この正確な例外が発生し始めます。