
Experimento congelaciones de aplicaciones todos los días, varias veces al día, desde hace unos días, en mi sistema Windows 7. Este sistema se ha mantenido estable durante 4 años, por lo que algo nuevo está sucediendo.
El síntoma principal fue que Thunderbird se congeló al iniciarse y quedó inutilizable. Pensé que era un problema con Thunderbird y finalmente creé un nuevo perfil porque mi perfil tiene más de 10 años.
¿Por qué pensé en el perfil? Porque descubrí que no podía eliminar algunos .msf
archivos sin reiniciar. Al intentar hacerlo, se congeló el Explorador y fue necesario reiniciarlo.
Con un nuevo perfil, Thunderbird continuó bloqueándose, pero con menos frecuencia, por lo que pude leer el correo y redactar una respuesta rápida.
Ayer estaba editando un .hmtl
archivo con gvim y, al mismo tiempo, lo cargaba en Firefox para ver el resultado.
Después de una hora de trabajo, volvió a congelarse. Cualquier proceso que intentara manipular el .hmtl
archivo se congeló. Matar tanto Firefox como gvim no ayudó.
El uso del explorador de procesos (NO iniciado como administrador) no pudo mostrar el .hmtl
archivo con su función de búsqueda de identificadores. Handle.exe tampoco pudo. Reiniciar desbloquea el archivo que no está dañado. Tengo chkdsk /B
mis dos dispositivos ( C:
es un SSD, D:
es un HDD), ya que el .msf
archivo estaba encendido D:
y el .hmtl
estaba encendido C:
.
Sospeché de la búsqueda de Windows y borré su base de datos.
Intenté desactivar la búsqueda de Windows, mi antivirus (Avast) y dos herramientas de sincronización/copia de seguridad que funcionan como un servicio.
No liberó ningún bloqueo.
He encontrado este interesante uso de windbg:Proceso bloqueado en Windows: ¿Hay alguna forma de ver por qué?
Adjunté el proceso de Thunderbird, actualmente congelado, y ahora veo esto:
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
---------
Entonces, está bien, estaba bastante convencido de que Thunderbird estaba bloqueando una IO, y ahora está confirmado. Según la documentación de la API, esta llamada puede ser la apertura de un archivo existente. Intenté volcar el argumento que proporciona el nombre del archivo (hasta donde tengo entendido) jugando aleatoriamente con este comando: "dt ntdll!_OBJECT_ATTRIBUTES 00000000`005847e0", pero no estoy familiarizado con windbg y las convenciones de llamadas, por lo que hasta ahora no pude profundizar en la estructura.
Entonces, ¿qué puedo hacer a continuación?
EDITAR:
Después de cambiar mi WinDbg a la versión x86 como se sugirió, mis volcados se volvieron analizables.
Los bloqueos desaparecieron, como siempre ocurre cuando te concentras en un problema: desaparece brevemente para evitar que se solucione, hasta esta noche, cuando Canon DPP se bloqueó durante un procesamiento por lotes de archivos RAW.
Aquí está el rastro:
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
---------
Localicé fácilmente el archivo correspondiente que estaba en mi unidad D:: D:\Sauvegarde\Tirages\photos\20151214 - totale D70\\GNZC0E116282C365.vbf
. Se cuelga el proceso después de 2 horas de trabajo. Estaba usando la PC en este momento. Definitivamente parece una corrupción del sistema de archivos o un error en el controlador del dispositivo, así que ejecutaré chkdsk nuevamente.
Mientras tanto, intenté iniciar ProcessExplorer para buscar procesos IO esperando en el archivo, funcionó. Pero recordé que debía iniciarse como administrador, así que lo cerré e hice clic derecho en el icono y... tardó unos 5 minutos en aparecer (no esperaba que apareciera, me sorprendió). Una vez más, según Process Explorer, no hay ningún identificador asociado con el archivo de bloqueo (busqué "vbf").
Bueno, creo que mi pregunta sobre el depurador está respondida (existencia de 2 versiones de WinDbg) y mi problema aún debe resolverse, pero no estoy seguro de que sea el lugar correcto para obtener ayuda.