0

「外部コンポーネントが例外をスローしました」というエラーが発生します。私のVB.netプロジェクトでランダムに.netフレームワーク4を使用しており、VB6からVB.NETにアップグレードされています。Windbgでデバッグしました。詳細は次のとおりです。

!pe
PDB symbol for clr.dll not loaded
Exception object: 05f95e18
Exception type:   System.TypeInitializationException
Message:          The type initializer for 'globalmodule.FrmMsgBox' threw an exception.
InnerException:   System.Runtime.InteropServices.SEHException, Use !PrintException 05f95cec to see more.
StackTrace (generated):
    SP       IP       Function
    0312FC28 7A97BB08 System_ni!System.ComponentModel.Component.Finalize()+0x18

StackTraceString: <none>
HResult: 80131534
0:002> !PrintException 05f95cec
Exception object: 05f95cec
Exception type:   System.Runtime.InteropServices.SEHException
Message:          External component has thrown an exception.
InnerException:   <none>
StackTrace (generated):
    SP       IP       Function
    00000000 00000000 testrec.exe!Unknown+0x1

StackTraceString: <none>
HResult: 80004005

call stack

 # ChildEBP RetAddr  Args to Child              
WARNING: Stack unwind information not available. Following frames may be wrong.
00 0312f0a4 79253990 e0434352 00000001 00000005 kernel32!RaiseException+0x52
01 0312f134 793b6a83 05f95e18 00000000 00000000 clr!CoInitializeEE+0x5511e
02 0312f154 793b6aff 05f95e18 00000000 00000004 clr!GetAddrOfContractShutoffFlag+0xf367
03 0312f180 793b6b3d 00000000 00000004 059c5c10 clr!GetAddrOfContractShutoffFlag+0xf3e3
04 0312f1b0 793b6b50 05f95e18 00000000 00000004 clr!GetAddrOfContractShutoffFlag+0xf421
05 0312f1c4 79252be6 05f95e18 00000004 13aa4fff clr!GetAddrOfContractShutoffFlag+0xf434
06 0312fb1c 7918e1ce 13aa4f67 79162160 7917793c clr!CoInitializeEE+0x54374
07 0312fb84 79162111 04bcf78c 13aa4f0b 0312fe68 clr!CreateAssemblyNameObject+0xd57f
08 0312fc00 7a97bb08 0312fc50 0015fc20 00000000 clr!CoUninitializeEE+0x3f69
09 0312fc20 7a97bb08 00000020 00000000 00000000 System_ni+0x15bb08
0a 0312fc48 7917ec61 0312fc94 792559cc 0312fe68 System_ni+0x15bb08
0b 0312fca4 7917eb29 05f95b8c 7a97baf0 00000000 clr!LogHelp_TerminateOnAssert+0x7829
0c 0312fcd0 7917ebb8 05f95b8c 05f95b8c 00000000 clr!LogHelp_TerminateOnAssert+0x76f1
0d 0312fce8 7917edff 05f95b8c 13aa49db 0312fd58 clr!LogHelp_TerminateOnAssert+0x7780
0e 0312fd38 7917ed3b 0015fc20 00000409 0312fd67 clr!LogHelp_TerminateOnAssert+0x79c7
0f 0312fd68 791cd5a6 0015fc20 00000000 0015fc20 clr!LogHelp_TerminateOnAssert+0x7903
10 0312fd84 7928453a 00000001 0312fe68 0015fc20 clr!GetCLRFunction+0x6383
11 0312fd98 792845bc 0312feb0 13aa4aab 0312feb0 clr!GetPrivateContextsPerfCounters+0x18bd
12 0312fe48 79284677 0312feb0 13aa4a4b 00000000 clr!GetPrivateContextsPerfCounters+0x193f
13 0312fea8 792f7ae7 00000000 00148308 00000000 clr!GetPrivateContextsPerfCounters+0x19fa

内部例外に対して生成されたスタックトレースを理解できませんでした(IP 00000000 function = testrec.exe!Unknown + 0x1)

そして、!dumpstackによって生成されたコールスタックからこの行に気づきました

0312f0b0 79253990 clr!CoInitializeEE+0x5511e, calling kernel32!RaiseException

ネットで検索した後、CoInitializeEE関数を知りました。共通言語ランタイム実行エンジンがプロセスにロードされ、実行エンジンをロードできなかった場合はE_FAILが返されることを確認します。HRESULTE_FAILがSystem.Runtime.InteropServices.SEHExceptionに返された場合、HRESULTE_FAILはExternalExceptionにマップされます。そうですか?はいの場合、実行エンジンのロードが失敗する原因は何でしょうか?

そして、私はこれを!uから入手しました

!u 7A97BB08 
preJIT generated code
System.ComponentModel.Component.Finalize()
Begin 7a97baf0, size 41
7a97baf0 55              push    ebp
7a97baf1 8bec            mov     ebp,esp
7a97baf3 57              push    edi
7a97baf4 56              push    esi
7a97baf5 53              push    ebx
7a97baf6 83ec14          sub     esp,14h
7a97baf9 33c0            xor     eax,eax
7a97bafb 8945e8          mov     dword ptr [ebp-18h],eax
7a97bafe 33d2            xor     edx,edx
7a97bb00 8b01            mov     eax,dword ptr [ecx]
7a97bb02 8b402c          mov     eax,dword ptr [eax+2Ch]
7a97bb05 ff5014          call    dword ptr [eax+14h]
**>>> 7a97bb08 c745e400000000  mov     dword ptr [ebp-1Ch],0**
7a97bb0f c745e8fc000000  mov     dword ptr [ebp-18h],0FCh
7a97bb16 6828bb977a      push    offset System_ni+0x15bb28 (7a97bb28)
7a97bb1b eb00            jmp     System_ni+0x15bb1d (7a97bb1d)
7a97bb1d 58              pop     eax
7a97bb1e ffe0            jmp     eax
7a97bb20 8d65f4          lea     esp,[ebp-0Ch]
7a97bb23 5b              pop     ebx
7a97bb24 5e              pop     esi
7a97bb25 5f              pop     edi
7a97bb26 5d              pop     ebp
7a97bb27 c3              ret
7a97bb28 c745e800000000  mov     dword ptr [ebp-18h],0
7a97bb2f ebef            jmp     System_ni+0x15bb20 (7a97bb20)

更新: この問題は、XPPCと一部のWindows8PCでのみ発生します。

ありがとうございました

4

0 に答える 0