| Anterior | Siguiente |
| STATUS_INVALID_PAGE_PROTECTION | STATUS_SEMAPHORE_LIMIT_EXCEEDED |
STATUS_MUTANT_NOT_OWNED
Qué significa STATUS_MUTANT_NOT_OWNED
Los mutex/mutants son objetos con ownership de thread. Solo el thread que adquirió el objeto puede liberar su nivel de ownership correspondiente. Este estado significa que el release se ejecutó desde otro thread o después de que la propiedad ya se hubiera liberado.
Thread pools son una pista frecuente: adquirir en un callback y publicar el release en otro worker viola el modelo aunque los datos protegidos sean globales. Cambiar a semaphore solo para permitir release cross-thread cambia la semántica de sincronización y merece un rediseño explícito.
Qué comprobar
- TID del acquire y del release.
- Recursion depth si el owner adquirió varias veces.
- Handoff entre callbacks/workers.
- Cleanup duplicado después de una ruta de error.
Referencias técnicas
¿Buscas un código diferente? Buscar otro código de estado o error.