!locks (!kdext*.locks)
La extensión !locks en Kdextx86.dll y Kdexts.dll muestra información sobre los bloqueos ERESOURCE de kernel.
Este comando de extensión no debe confundirse con el comando de extensión !ntsdexts.locks.
!locks [Options] [Address]
Parámetros
Opciones Especifica la cantidad de información que se va a mostrar. Se puede usar cualquier combinación de las siguientes opciones:
-v
Muestra información detallada sobre cada bloqueo.
-p
Muestra toda la información disponible sobre los bloqueos, incluidas las estadísticas de rendimiento.
-d
Mostrar información sobre todos los bloqueos. De lo contrario, solo se muestran los bloqueos con contención).
Dirección
Especifica la dirección hexadecimal del bloqueo ERESOURCE que se va a mostrar. Si Address es 0 o se omite, se mostrará información sobre todos los bloqueos ERESOURCE del sistema.
Archivo DLL
Kdexts.dll
Comentarios
La extensión !locks muestra todos los bloqueos mantenidos en los recursos por subprocesos. Un bloqueo puede compartirse o ser exclusivo, lo que significa que ningún otro subproceso puede obtener acceso a ese recurso. Esta información es útil cuando se produce un interbloqueo en un sistema. Un interbloqueo se debe a que un subproceso que no se está ejecutando contiene un bloqueo exclusivo en un recurso que necesita el subproceso en ejecución.
Por lo general se puede identificar un interbloqueo en Microsoft Windows 2000 si se encuentra un subproceso que no se ejecuta que contenga un bloqueo exclusivo en un recurso que requiere un subproceso en ejecución. La mayoría de los bloqueos se comparten.
Este es un ejemplo de resultado básico de !locks:
kd> !locks
**** DUMP OF ALL RESOURCE OBJECTS ****
KD: Scanning for held locks......
Resource @ 0x80e97620 Shared 4 owning threads
Threads: ff688da0-01<*> ff687da0-01<*> ff686da0-01<*> ff685da0-01<*>
KD: Scanning for held locks.......................................................
Resource @ 0x80e23f38 Shared 1 owning threads
Threads: 80ed0023-01<*> *** Actual Thread 80ed0020
KD: Scanning for held locks.
Resource @ 0x80d8b0b0 Shared 1 owning threads
Threads: 80ed0023-01<*> *** Actual Thread 80ed0020
2263 total locks, 3 locks currently held
Tenga en cuenta que la dirección de cada subproceso que se muestra va seguida del recuento de subprocesos (por ejemplo, "-01"). Si un subproceso va seguido de "<*>", ese subproceso es uno de los propietarios del bloqueo. En algunos casos, la dirección del subproceso inicial contiene un desplazamiento. En ese caso, también se muestra la dirección del subproceso real.
Si desea encontrar más información sobre uno de estos objetos de recursos, use la dirección que sigue a "Resource @" como argumento para comandos futuros. Para investigar el segundo recurso que se muestra en el ejemplo anterior, podría usar dt ERESOURCE 80d8b0b0 o !thread 80ed0020. O bien, podría usar la extensión !locks de nuevo con la opción -v:
kd> !locks -v 80d8b0b0
Resource @ 0x80d8b0b0 Shared 1 owning threads
Threads: 80ed0023-01<*> *** Actual Thread 80ed0020
THREAD 80ed0020 Cid 4.2c Teb: 00000000 Win32Thread: 00000000 WAIT: (WrQueue) KernelMode Non-Alertable
8055e100 Unknown
Not impersonating
GetUlongFromAddress: unable to read from 00000000
Owning Process 80ed5238
WaitTime (ticks) 44294977
Context Switch Count 147830
UserTime 0:00:00.0000
KernelTime 0:00:02.0143
Start Address nt!ExpWorkerThread (0x80506aa2)
Stack Init fafa4000 Current fafa3d18 Base fafa4000 Limit fafa1000 Call 0
Priority 13 BasePriority 13 PriorityDecrement 0
ChildEBP RetAddr
fafa3d30 804fe997 nt!KiSwapContext+0x25 (FPO: [EBP 0xfafa3d48] [0,0,4]) [D:\NT\base\ntos\ke\i386\ctxswap.asm @ 139]
fafa3d48 80506a17 nt!KiSwapThread+0x85 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\nt\base\ntos\ke\thredsup.c @ 1960]
fafa3d78 80506b36 nt!KeRemoveQueue+0x24c (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ke\queueobj.c @ 542]
fafa3dac 805ad8bb nt!ExpWorkerThread+0xc6 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ex\worker.c @ 1130]
fafa3ddc 8050ec72 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ps\create.c @ 2164]
00000000 00000000 nt!KiThreadStartup+0x16 [D:\NT\base\ntos\ke\i386\threadbg.asm @ 81]
1 total locks, 1 locks currently held