私のソフトウェアは最近、アプリケーションが起動直後にクラッシュしたと言う顧客にデプロイされました。最初のデバッグの後、顧客は、アプリケーションを実行できなかったコンピューターの 1 つへのリモート アクセスを提供してくれました。 クラッシュは私のアプリケーションに固有のものではないことがわかりました。.NET フレームワークに依存するアプリケーションは、すぐにクラッシュしました。
便利なことに、Visual Studio 2008 がインストールされていたので、簡単な Hello World アプリケーションを作成し、[デバッグ] をクリックしました。アプリケーションは正常に機能しました。しかし、生成されたバイナリを Visual Studio の外の /bin/Debug/HelloWorld.exe ディレクトリで実行しようとすると、クラッシュしました。
私が試したことのリスト(更新済み):
- "Everyone" が c:\Windows の読み取りと実行のアクセス許可を持っていることを確認しました。
- 問題が (私のアプリケーションではなく) .NET Framework にあることをテストするために、Paint .NET をコンピューターにダウンロードしようとしました。セットアップ フロントエンドも同じようにクラッシュしました。
- http://support.microsoft.com/kb/908077で概説されているように、.NET フレームワークの修復を実行しました(少年はこれが楽しくて時間がかかりました)。運がない。
- .NET 3.5 SP1 をインストールしました (.NET 3.5 をインストールする前に) 注: 私のアプリケーションは 2.0 をターゲットにしているので、これはロング ショットとして行いました... しかし、その過程で .NET 3.5 SP1 が基礎となるフレームワークも更新することを知りました。
- Aaron Stebnerの .NET Setup Verification Toolを実行しました。このツールは、.NET が正常にインストールされたことを示しました。(すべてのバージョンをチェックしたかどうかは忘れましたが、少なくとも 2.0 は機能していました)。
- .NET 2.0 と .NET 3.5 を対象としたいくつかのミニ Hello World アプリケーションをテストしましたが、どちらも同じようにクラッシュしました。
- windbg コマンドラインから .NET アプリを起動しようとしました。これを行うことで、単純な Hello World アプリケーションを呼び出すことができました。したがって、単純な .NET hello world は、windbg によって呼び出されるか、Visual Studio でデバッグを介して起動されると機能しますが、スタンドアロンで実行しようとすると機能しません。
WinDbg を使用してダンプ ファイルを作成しました。それは私にはそれほど明らかではありませんでした。
FAULTING_IP: mscorwks!PEImage::GetEntryPointToken+21 79f4ff9d f6401010 test byte ptr [eax+10h],10h
EXCEPTION_RECORD: 0012f710 -- (.exr 0x12f710) ExceptionAddress: 79f4ff9d (mscorwks!PEImage::GetEntryPointToken+0x00000021) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 00000010 Attempt to read from address 00000010
FAULTING_THREAD: 00000b44
PROCESS_NAME: MyProcess.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
DETOURED_IMAGE: 1
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
MANAGED_STACK: !dumpstack -EE OS Thread Id: 0xb44 (0) Current frame: ChildEBP RetAddr Caller,Callee
EXCEPTION_OBJECT: !pe cb10b4 Exception object: 00cb10b4 Exception type: System.ExecutionEngineException Message: <none> InnerException: <none> StackTrace (generated): <none> StackTraceString: <none> HResult: 80131506
MANAGED_OBJECT_NAME: System.ExecutionEngineException
CONTEXT: 0012f72c -- (.cxr 0x12f72c) eax=00000000 ebx=00000000 ecx=00000000 edx=0000000e esi=001a1490 edi=00000001 eip=79f4ff9d esp=0012f9f8 ebp=0012fa1c iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 mscorwks!PEImage::GetEntryPointToken+0x21: 79f4ff9d f6401010 test byte ptr [eax+10h],10h ds:0023:00000010=?? Resetting default scope
READ_ADDRESS: 00000010
FOLLOWUP_IP: mscorwks!PEImage::GetEntryPointToken+21 79f4ff9d f6401010 test byte ptr [eax+10h],10h
BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN
PRIMARY_PROBLEM_CLASS: NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN
DEFAULT_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN
LAST_CONTROL_TRANSFER: from 79ef02b5 to 79f4ff9d
STACK_TEXT: 79f4ff9d mscorwks!PEImage::GetEntryPointToken+0x21 79ef02b5 mscorwks!PEFile::GetEntryPointToken+0xa0 79eefeaf mscorwks!SystemDomain::ExecuteMainMethod+0xd4 79fb9793 mscorwks!ExecuteEXE+0x59 79fb96df mscorwks!_CorExeMain+0x15c 7900b1b3 mscoree!_CorExeMain+0x2c 7c817077 kernel32!BaseProcessStart+0x23
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: mscorwks!PEImage::GetEntryPointToken+21
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: mscorwks
IMAGE_NAME: mscorwks.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 471ef729
STACK_COMMAND: .cxr 0012F72C ; kb ; dds 12f9f8 ; kb
FAILURE_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN_80000003_mscorwks.dll!PEImage::GetEntryPointToken
BUCKET_ID: APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN_DETOURED_mscorwks!PEImage::GetEntryPointToken+21
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/MyProcess_exe/2_4_4_39/4a8a192c/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
Followup: MachineOwner
編集 1:このエラーのイベント ログの詳細は、.NET ランタイム バージョン 2.0.50727.3053 - Fatal Execution Engine Error (7A097706)(80131506) であると述べています。
(ソース: blakerobertson.com )
編集 2 (10-7-09): この問題はまだアクティブです。
編集 3 (3-29-10): この更新は、私が問題を解決できなかったことを皆に知らせるためのものです。これをマシンとして使用していたお客様は、問題を解決することに興味を失い、マシンのイメージを再作成しました:(。しかし、すべての貢献に感謝します。