Outlook Express が応答なしのまま動かないので、ダンプを取っておきました。
0:000> kb
ChildEBP RetAddr Args to Child
0006a52c 7c94e9c0 7c8025db 000001a5 00000000 ntdll!KiFastSystemCallRet
0006a530 7c8025db 000001a5 00000000 00000000 ntdll!ZwWaitForSingleObject+0xc
0006a594 77e40acb 000001a5 ffffffff 00000000 kernel32!WaitForSingleObjectEx+0xa8
0006a5b0 77e40a81 0018808c 00000000 ffffffff rpcrt4!UTIL_WaitForSyncIO+0x20
0006a5d4 77e41289 00188058 0018808c 0006a618 rpcrt4!UTIL_GetOverlappedResultEx+0x1d
0006a5f0 77e41247 00188058 0018808c 0006a618 rpcrt4!UTIL_GetOverlappedResult+0x17
0006a610 77e40898 00000400 00000070 00166748 rpcrt4!NMP_SyncSendRecv+0x73
0006a630 77e40e8d 00166748 00000070 0006a748 rpcrt4!OSF_CCONNECTION::TransSendReceive+0x9e
0006a6ac 77e40e0d 00166748 05c3aa88 00000001 rpcrt4!OSF_CCONNECTION::SendFragment+0x226
0006a704 77e40c6f 00000000 00000058 0006a748 rpcrt4!OSF_CCALL::SendNextFragment+0x1d2
0006a74c 77e40bbc 0006a7d0 0006a78c 00000001 rpcrt4!OSF_CCALL::FastSendReceive+0x144
0006a768 77e4110b 0006a7d0 0006a78c 0006a7d0 rpcrt4!OSF_CCALL::SendReceiveHelper+0x58
0006a794 77e3a716 00166760 0006a7b4 77e3a747 rpcrt4!OSF_CCALL::SendReceive+0x41
0006a7a0 77e3a747 0006a7d0 75ec1aa0 0006abac rpcrt4!I_RpcSendReceive+0x24
0006a7b4 77eb3675 0006a7fc 001667b8 00000000 rpcrt4!NdrSendReceive+0x2b
0006ab90 75ec34a4 75ec1aa0 75ec17da 0006abac rpcrt4!NdrClientCall2+0x222
0006aba4 75ec42b9 000c1430 00000000 000bfbd0 davclnt!DavrCreateConnection+0x1b
0006ae58 71a54daa 00000000 0006bb18 00000000 davclnt!NPAddConnection3+0x17e
0006ae80 71a54d3c 00000000 0006baac 00000035 mpr!CUseConnection::TestProviderWorker+0x47
0006b750 71a525bd 0009cf78 0009ce20 0009cecc mpr!CUseConnection::TestProvider+0x62
WaitForSingleObjectEx で無制限に待っているので、何を待っているのかな?と調べてみると・・・
0:000> !handle 000001a5 f
Handle 000001a5
Type
unable to query object information
unable to query object information
No object specific information available
ハンドルがないです。これは困った。!handle で全部のハンドルを表示してみても 1a5 のハンドルがありません。
調べてみたのですが、
1. 待っている対象のハンドルを持ったスレッド/プロセスが不正に終了してしまった
→その場合はハンドルはクローズされ、待っているスレッドは待ち状態から解放される
2. 存在しないハンドルを指定した
→その場合は InvalidHandleException が起きるはず
となってしまいこの状態が説明できません。
今回のハングアップを調べるには、カーネル モード デバッグでハンドル状態をずっと監視していないといけないのですが、ハングアップを再度発生させることはできないのでこれ以上は不明です。
No comments:
Post a Comment