¿Qué significa el código NTSTATUS 0xC0000046 (STATUS_MUTANT_NOT_OWNED)?

 
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.