web-dev-qa-db-ja.com

.Net 4.0 WindowsアプリケーションがWindows Server 2008の下でclr.dllでクラッシュする

毎日実行するようにスケジュールされた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時間程度のアプリケーションの寿命のどこで失敗するかはわかりません。

33
Rez.Net

ホットフィックスはほとんど消滅し、同様の問題に直面したため、ここで回答を共有します。

私の解決策は、ラムダをP/Invokeに渡すという事実を中心に展開しました。

https://stackoverflow.com/a/52360307/4700841

1
Persistence

私は同じ問題を抱えています。アプリケーションの寿命が約8〜10時間になると、CLRエラーが増加します。バックグラウンドスレッドでアンマネージコードが例外を生成している疑いがあります。しかし、私は本当に理由を見つけることができませんでした。ただし、次のことを試すことができます。

  • アンマネージコードを使用している場合は、実行中に例外処理ステートメントを確認してください。
  • .NET4の最新の修正があることを確認してください。
    https://connect.Microsoft.com/VisualStudio/Downloads

解決策が見つかった場合はお知らせください。

1
Demir

私は同様の問題を抱えていたので、これは将来のユーザーが解決策を見つけるのに役立ちます:

アプリケーションログにはApache log4netを使用します。

DLLバージョン1.2.15の更新後、ドットネットFramwork 4.5の場合、ログファイルが最大サイズ(10MB)に達すると、この正確な例外が発生し始めます。

1
gis