Comprobación de errores 0x4000008A: THREAD_TERMINATE_HELD_MUTEX

La comprobación de errores de THREAD_TERMINATE_HELD_MUTEX tiene un valor de 0x4000008A. Esto indica que un controlador adquirió una exclusión mutua en un subproceso que salió antes de que se liberara la exclusión mutua. Esto puede deberse a que un controlador vuelve al modo de usuario sin liberar una exclusión mutua o un controlador que adquiere una exclusión mutua y, a continuación, provocar una excepción que da como resultado el subproceso en el que se ejecuta, se termina.

Importante

Este artículo es para programadores. Si es un cliente que ha recibido un código de error de pantalla azul mientras usa el equipo, consulte Solución de errores de pantalla azul.

parámetros de THREAD_TERMINATE_HELD_MUTEX

Parámetro Descripción
1 Dirección del KTHREAD que posee el KMUTEX.
2 Dirección del KMUTEX que es propiedad de .
3 Reservado
4 Reservado

Causa

La extensión de depuración !analyze muestra información sobre la comprobación de errores y puede ser útil para determinar la causa principal.

Para investigar, examine la pila de llamadas. Si hay un controlador en la pila que va seguido directamente de rutinas de control de excepciones del sistema y, a continuación, rutinas de terminación de subprocesos, este controlador está en error y debe corregirse para que no provoque una excepción no controlada mientras mantiene una exclusión mutua del kernel. Si la pila solo muestra el código de terminación normal del subproceso y no hay ningún controlador implicado, ejecute !pool o use ln (Enumerar símbolos más cercanos) en la dirección de la exclusión mutua (parámetro 2) y vea si puede detectar quién es el propietario. Este error casi seguramente estará en el código del propietario de esa exclusión mutua.