
私の Windows 7 システムでは、ここ数日、毎日、1 日に数回、アプリケーションがフリーズする現象が発生しています。このシステムは 4 年間安定していたので、何か新しいことが起こっているようです。
主な症状は、Thunderbird が起動時にフリーズし、使用できなくなることでした。これは Thunderbird の問題だと思い、私のプロファイルは 10 年以上前のものだったので、最終的に新しいプロファイルを作成しました。
なぜプロファイルについて考えたのでしょうか? 再起動しないと一部のファイルを削除できないことがわかったからです.msf
。削除しようとするとエクスプローラーがフリーズしてしまい、再起動する必要がありました。
新しいプロファイルでは、Thunderbird は引き続きフリーズしましたが、頻度は減り、メールを読んだり、簡単な返信を作成したりできるようになりました。
昨日、gvim でファイルを編集していました.hmtl
が、同時に、その結果を見るために Firefox に読み込んでいました。1
時間作業した後、再びフリーズしてしまいました。ファイルを操作しようとするすべてのプロセスが.hmtl
フリーズしてしまいました。Firefox と gvim の両方を終了しても効果はありませんでした。
プロセス エクスプローラー (管理者として起動されていない) を使用しても、.hmtl
ハンドル検索機能でファイルを表示できませんでした。Handle.exe でも表示できませんでした。再起動すると、破損していないファイルのロックが解除されます。chkdsk /B
デバイスが 2 つあります (C:
は SSD、D:
は HDD)。.msf
ファイルは にありD:
、 は.hmtl
にありますC:
。
Windows Search が原因だと疑い、データベースをクリアしました。Windows
Search、ウイルス対策ソフト (Avast)、サービスとして動作している 2 つの同期/バックアップ ツールを無効にしてみました。
ロックを解除しませんでした。
私は、この興味深い windbg の使用法を見つけました:Windows でプロセスがハングしました。その理由を確認する方法はありますか?
Thunderbird プロセスを添付しましたが、現在フリーズしており、次のように表示されます。
FAULTING_IP:
ntdll!DbgBreakPoint+0
00000000`7772cc90 cc int 3
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 000000007772cc90 (ntdll!DbgBreakPoint)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 1
Parameter[0]: 0000000000000000
FAULTING_THREAD: 0000000000000000
BUGCHECK_STR: HANG
PROCESS_NAME: thunderbird.exe
ERROR_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
EXCEPTION_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
EXCEPTION_PARAMETER1: 0000000000000000
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
DERIVED_WAIT_CHAIN:
Dl Eid Cid WaitType
-- --- ------- --------------------------
56 74c.1a04 Speculated (Triage) -->
0 74c.12b4 File IO
WAIT_CHAIN_COMMAND: ~56s;k;;~0s;k;;
BLOCKING_THREAD: 00000000000012b4
DEFAULT_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO
PRIMARY_PROBLEM_CLASS: APPLICATION_HANG_BlockedOn_FileIO
LAST_CONTROL_TRANSFER: from 00000000751dc1ff to 000000007772df0a
STACK_TEXT:
00000000`0024ddd8 00000000`751dc1ff : 00000000`003becdc 00000000`003becf4 00000000`005847e0
000000ba`00340201 : ntdll!ZwCreateFile+0xa
00000000`0024dde0 00000000`751cd18f : 00000000`003becdc 00000000`00000000 00000000`00000000
00000000`00000060 : wow64!whNtCreateFile+0x10f
00000000`0024deb0 00000000`75152776 : 00000000`77360745 00000000`751c0023 00000000`00000246
00000000`003bf2f8 : wow64!Wow64SystemServiceEx+0xd7
00000000`0024e770 00000000`751cd286 : 00000000`00000000 00000000`75151920 ffffffff`fc5f0000
00000000`7770dfc1 : wow64cpu!TurboDispatchJumpAddressEnd+0x2d
00000000`0024e830 00000000`751cc69e : 00000000`00000000 00000000`00000000 00000000`751c4b10
00000000`7ffe0030 : wow64!RunCpuSimulation+0xa
00000000`0024e880 00000000`777216a6 : 00000000`00584330 00000000`00000000 00000000`7780e670
00000000`777e1950 : wow64!Wow64LdrpInitialize+0x42a
00000000`0024edd0 00000000`7777d150 : 00000000`00000000 00000000`77720db1 00000000`0024f380
00000000`00000000 : ntdll!LdrpInitializeProcess+0x17e3
00000000`0024f2c0 00000000`7770b63e : 00000000`0024f380 00000000`00000000 00000000`fffdf000
00000000`00000000 : ntdll! ?? ::FNODOBFM::`string'+0x25b20
00000000`0024f330 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000
00000000`00000000 : ntdll!LdrInitializeThunk+0xe
FOLLOWUP_IP:
wow64!whNtCreateFile+10f
00000000`751dc1ff 448bd8 mov r11d,eax
SYMBOL_STACK_INDEX: 1
SYMBOL_NAME: wow64!whNtCreateFile+10f
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: wow64
IMAGE_NAME: wow64.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 562593aa
STACK_COMMAND: ~0s ; kb
BUCKET_ID: X64_HANG_wow64!whNtCreateFile+10f
FAILURE_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO_cfffffff_wow64.dll!whNtCreateFile
WATSON_STAGEONE_URL: http://watson.microsoft.com/0004cc90.htm?Retriage=1
Followup: MachineOwner
---------
それで、Thunderbird が IO をブロックしていると確信していましたが、今、それが確認されました。API ドキュメントによると、この呼び出しは既存のファイルを開くことができます。私は、次のコマンドをランダムに実行して、ファイル名 (私が理解している限り) を指定して引数をダンプしようとしました: "dt ntdll!_OBJECT_ATTRIBUTES 00000000`005847e0" ですが、windbg と呼び出し規約に詳しくないため、これまで構造を詳しく調べることができませんでした。
では次に何ができるでしょうか?
編集:
提案されたとおり、WinDbg を x86 バージョンに変更したら、ダンプが分析可能になりました。
フリーズは解消されました。問題に集中するといつもそうなるのですが、解決を避けるために一時的に消えるのです。しかし、今夜、Canon DPP が RAW ファイルのバッチ処理中にフリーズしました。
これがトレースです。
FAULTING_IP:
ntdll!DbgBreakPoint+0
7736000c cc int 3
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7736000c (ntdll!DbgBreakPoint)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 1
Parameter[0]: 00000000
FAULTING_THREAD: 00000000
BUGCHECK_STR: HANG
PROCESS_NAME: DPPBatch.exe
ERROR_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
EXCEPTION_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
EXCEPTION_PARAMETER1: 00000000
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
DERIVED_WAIT_CHAIN:
Dl Eid Cid WaitType
-- --- ------- --------------------------
1 1b88.1ff4 Speculated (Triage) -->
0 1b88.1948 File IO
WAIT_CHAIN_COMMAND: ~1s;k;;~0s;k;;
BLOCKING_THREAD: 00001948
DEFAULT_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO
PRIMARY_PROBLEM_CLASS: APPLICATION_HANG_BlockedOn_FileIO
LAST_CONTROL_TRANSFER: from 74e8c5fd to 77370106
STACK_TEXT:
0018ed8c 74e8c5fd 0018ee28 80100080 0018edcc ntdll!ZwCreateFile+0x12
0018ee30 76e53f56 00000060 80100080 00000001 KERNELBASE!CreateFileW+0x35e
0018ee5c 76e553b4 0058e300 80000000 00000001 kernel32!CreateFileWImplementation+0x69
0018ee8c 100dbf8e 01f4ed98 80000000 00000001 kernel32!CreateFileA+0x37
WARNING: Stack unwind information not available. Following frames may be wrong.
0018eeb8 10002275 01f40000 00000000 10002294 DPPDLL!GNZ_getFilenameFromScriptFile+0x3e
0018eef8 0018ef7c 01f4ed98 00000000 0018ef7c DPPDLL!UCSCloseProfile+0xea5
0018eefc 01f4ed98 00000000 0018ef7c 01f4fc20 0x18ef7c
0018ef7c 00000000 00000000 00000000 00000000 0x1f4ed98
FOLLOWUP_IP:
DPPDLL!GNZ_getFilenameFromScriptFile+3e
100dbf8e 8bf8 mov edi,eax
SYMBOL_STACK_INDEX: 4
SYMBOL_NAME: dppdll!GNZ_getFilenameFromScriptFile+3e
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: DPPDLL
IMAGE_NAME: DPPDLL.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 52251a6c
STACK_COMMAND: ~0s ; kb
BUCKET_ID: HANG_dppdll!GNZ_getFilenameFromScriptFile+3e
FAILURE_BUCKET_ID: APPLICATION_HANG_BlockedOn_FileIO_cfffffff_DPPDLL.dll!GNZ_getFilenameFromScriptFile
WATSON_STAGEONE_URL: http://watson.microsoft.com/0001000c.htm?Retriage=1
Followup: MachineOwner
---------
対応するファイルが D: ドライブにあることが簡単にわかりました。2D:\Sauvegarde\Tirages\photos\20151214 - totale D70\\GNZC0E116282C365.vbf
時間の作業の後、プロセスがハングしました。このとき、PC を使用していました。ファイル システムの破損またはデバイス ドライバーのバグのように見えるため、もう一度 chkdsk を実行します。
その間、ProcessExplorer を起動して、ファイルで IO を待機しているプロセスを検索しようとしましたが、うまくいきました。ただし、管理者として起動する必要があることを思い出したので、それを閉じてアイコンを右クリックしました。ポップアップするまでに約 5 分かかりました (ポップアップするとは思っていなかったので、驚きました)。もう一度、Process Explorer によると、ブロック ファイルに関連付けられているハンドルはありません (「vbf」を検索しました)。
まあ、デバッガーに関する私の質問は答えられたと思います (WinDbg の 2 つのバージョンが存在)。私の問題はまだ解決する必要がありますが、それがそれに関する支援を得るのに適切な場所であるかどうかはわかりません。