!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