Eu experimento aplicativo todos os dias, várias vezes ao dia, por alguns dias agora, no meu sistema Windows 7. Este sistema está estável há 4 anos, então algo novo está acontecendo.
O principal sintoma foi que o Thunderbird congelou na inicialização e se tornou inutilizável. Eu pensei que era um problema com o Thunderbird e, eventualmente, criei um novo perfil porque meu perfil tem mais de 10 anos.
Por que pensei no perfil? Porque descobri que não consegui excluir alguns arquivos .msf
sem uma reinicialização. Tentar fazê-lo congelou o Explorer que precisava ser reiniciado.
Com um novo perfil, o Thunderbird continuou a congelar, mas com menos frequência, por isso consegui ler e-mails e escrever uma resposta rápida.
Ontem eu estava editando um arquivo .hmtl
com o gvim e, ao mesmo tempo, o estava carregando no Firefox para ver o resultado.
Depois de uma hora de trabalho, ele congelou novamente. Qualquer processo que tente manipular o arquivo .hmtl
foi congelado. Matar o Firefox e o gvim não ajudou.
O uso do explorador de processos (NÃO iniciado como administrador) não pôde mostrar o arquivo .hmtl
com sua função de pesquisa de identificador. O Handle.exe também não.
A reinicialização desbloqueia o arquivo que não está danificado.
Eu tenho chkdsk /B
meus dois dispositivos ( C:
é um SSD, D:
é um HDD), como o arquivo .msf
estava em D:
e o .hmtl
estava em C:
.
Eu suspeitei de pesquisa do Windows e limpei seu banco de dados.
Tentei desativar a pesquisa do Windows, meu antivírus (Avast) e duas ferramentas de sincronização / backup funcionando como um serviço.
Não liberou nenhum bloqueio.
Eu encontrei este interessante uso windbg: Processo suspenso no Windows: existe alguma maneira de ver o motivo?
Eu associei o processo do Thunderbird, atualmente congelando, e agora vejo isso:
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
---------
Então, OK, eu estava bastante convencido de que o Thunderbird estava bloqueando um IO, e agora, está confirmado. De acordo com a documentação da API, essa chamada pode ser a abertura de um arquivo existente. Eu tentei despejar o argumento dando o nome do arquivo (tanto quanto eu entendo) jogando aleatoriamente com este comando: "dt ntdll! _OBJECT_ATTRIBUTES 00000000'005847e0", mas eu não estou familiarizado com windbg e convenções de chamada, então eu falhei até agora para cavar na estrutura.
Então, o que posso fazer a seguir?
EDIT:
Depois de alterar minha versão do WinDbg para x86 como sugerido, meus despejos se tornaram analisáveis.
Congelamentos saíram, como sempre acontece quando você se concentra em um problema: ele desaparece brevemente para evitar ser resolvido, até esta noite, quando a Canon DPP congelou durante um processamento em lote de arquivos RAW.
Aqui está o traço:
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
---------
Encontrei facilmente o arquivo correspondente na minha unidade D:: D:\Sauvegarde\Tirages\photos151214 - totale D70\GNZC0E116282C365.vbf
. Pendure o processo após 2 horas de trabalho. Eu estava usando o PC neste momento.
Definitivamente se parece com uma corrupção do sistema de arquivos ou bug de driver de dispositivo, então eu vou executar novamente o chkdsk.
Nesse meio tempo, eu tentei iniciar o ProcessExplorer para procurar por processos IO esperando no arquivo, funcionou. Mas eu lembrei que ele deveria ser lançado como admin, então eu fechei e cliquei direito no ícone e ... demorou cerca de 5 minutos para aparecer (eu não esperava que ele aparecesse, me surpreendeu). Mais uma vez, de acordo com o Process Explorer, nenhum identificador é associado ao arquivo de bloqueio (procurei por "vbf").
Bem, acho que minha pergunta sobre o depurador está respondida (existência de duas versões do WinDbg), e meu problema ainda precisa ser resolvido, mas não tenho certeza se é o lugar certo para obter ajuda.