El recuento de bloqueos negativos es un comportamiento normal en algunas versiones de Windows. Tenga en cuenta que el significado de este campo ha cambiado durante la vida útil de Windows (consulte a continuación).
La interpretación de estos campos privados es un asunto complicado y puede beneficiarse del uso de herramientas de depuración de secciones críticas dedicadas.
Por ejemplo, consulte este MSDN article para obtener más información. En particular, creo que muestra por qué un valor de -6 es perfectamente plausible.
Algunos extractos pertinentes:
secciones críticas se pueden visualizar en el modo de usuario por una variedad de métodos diferentes. El significado exacto de cada campo depende de la versión de la versión de Microsoft Windows que esté utilizando.
......
En Microsoft Windows 2000, y Windows XP, el campo cuenta de bloqueos indica el número de veces que cualquier mensaje ha llamado la rutina EnterCriticalSection para esta sección crítica, menos uno. Este campo comienza en -1 para una sección crítica desbloqueada. Cada llamada de EnterCriticalSection incrementa este valor; cada llamada de LeaveCriticalSection lo disminuye. Por ejemplo, si LockCount es 5, esta sección crítica está bloqueada, un hilo la ha adquirido y cinco hilos adicionales están esperando este bloqueo.
......
En Microsoft Windows Server 2003 Service Pack 1 y versiones posteriores de de Windows, el campo cuenta de bloqueos se analiza como sigue:
- El bit más bajo muestra el estado de bloqueo . Si este bit es 0, la sección crítica está bloqueada; si es 1, la sección crítica no está bloqueada.
- El siguiente bit muestra si se ha despertado un hilo para este bloqueo. Si este bit es 0, entonces se ha despertado un hilo para este bloqueo; si es 1, no se ha despertado ningún hilo.
- Los bits restantes son los que complementan el número de subprocesos esperando el bloqueo.
A continuación, pasa a explicar cómo interpretar un recuento de bloqueo de -22
. Entonces, en resumen, ¡es más complicado de lo que piensas!
"Un valor de 0 o mayor indica que la sección crítica es propiedad o propiedad" puede haber sido cierta una vez pero ya no es así en Windows moderno. –
Esta respuesta es obsoleta y debería eliminarse. –