Ho riscontrato il blocco delle applicazioni ogni giorno, più volte al giorno, per qualche giorno, sul mio sistema Windows 7. Questo sistema è stabile da 4 anni, quindi sta accadendo qualcosa di nuovo.
Il sintomo principale era che Thunderbird si bloccava all'avvio e diventava inutilizzabile. Ho pensato che fosse un problema con Thunderbird e alla fine ho creato un nuovo profilo perché il mio profilo ha più di 10 anni.
Perché ho pensato al profilo? Perché ho scoperto che non potevo eliminare alcuni .msf
file senza riavviare. Cercando di farlo, congelò Explorer che doveva essere riavviato.
Con un nuovo profilo, Thunderbird ha continuato a bloccarsi, ma meno frequentemente, quindi sono stato in grado di leggere la posta e comporre una risposta rapida.
Ieri stavo modificando un .hmtl
file con gvim e, allo stesso tempo, lo stavo caricando su Firefox per vedere il risultato.
Dopo un'ora di lavoro, si bloccò di nuovo. Qualsiasi processo che tenta di manipolare il .hmtl
file è stato bloccato. Uccidere sia Firefox che gvim non ha aiutato.
Utilizzando Process Explorer (NON avviato come amministratore) non è stato possibile visualizzare il .hmtl
file con la sua funzione di ricerca handle. Nemmeno Handle.exe è riuscito. Il riavvio sblocca il file che non è danneggiato. Ho i chkdsk /B
miei due dispositivi ( C:
è un SSD, D:
è un HDD), dato che il .msf
file era attivo D:
e .hmtl
attivo C:
.
Ho sospettato la ricerca di Windows e cancellato il suo database.
Ho provato a disattivare la ricerca di Windows, il mio antivirus (Avast) e due strumenti di sincronizzazione / backup funzionanti come servizio.
Non ha rilasciato alcun blocco.
Ho trovato questo interessante uso di windbg: Processo bloccato in Windows: c'è un modo per capire perché?
Ho collegato il processo Thunderbird, attualmente in fase di blocco, e ora vedo questo:
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
---------
Quindi, OK, ero abbastanza convinto che Thunderbird stesse bloccando un IO, e ora è confermato. Secondo la documentazione dell'API, questa chiamata può essere l'apertura di un file esistente. Ho provato a scaricare l'argomento dando il nome del file (per quanto ho capito) giocando casualmente con questo comando: "dt ntdll! _OBJECT_ATTRIBUTES 00000000`005847e0", ma non ho familiarità con windbg e chiamando convenzioni, quindi non sono riuscito finora a scavare nella struttura.
Quindi cosa posso fare dopo?
EDIT:
Dopo aver cambiato il mio WinDbg alla versione x86 come suggerito, i miei dump sono diventati analizzabili.
I blocchi si sono interrotti, come sempre accade quando ti concentri su un problema: scompare brevemente per evitare di essere risolto, fino a questa notte, quando Canon DPP si è bloccato durante l'elaborazione batch di file RAW.
Ecco la traccia:
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
---------
Ho facilmente rintracciato il file corrispondente per essere sul mio disco D:: D:\Sauvegarde\Tirages\photos\20151214 - totale D70\\GNZC0E116282C365.vbf
. Appende il processo dopo 2 ore di lavoro. Stavo usando il PC in questo momento. Sembra sicuramente un danneggiamento del file system o un bug del driver del dispositivo, quindi eseguirò di nuovo chkdsk.
Nel frattempo, ho provato ad avviare ProcessExplorer per cercare i processi IO in attesa sul file, ha funzionato. Ma mi sono ricordato che doveva essere lanciato come admin, quindi l'ho chiuso e ho fatto clic con il tasto destro sull'icona e ... ci sono voluti circa 5 minuti per aprirlo (non mi aspettavo che comparisse, mi ha sorpreso). Ancora una volta, secondo Process Explorer, nessun handle è associato al file di blocco (ho cercato "vbf").
Bene, penso che la mia domanda sul debugger abbia una risposta (esistenza di 2 versioni di WinDbg) e il mio problema deve ancora essere risolto, ma non sono sicuro che sia il posto giusto per ottenere aiuto su di esso.