Fallos del tipo CWE-832
1 resultadoLiberação de recurso não bloqueado
Ocorre quando o código tenta liberar (unlock) um recurso de sincronização — como mutex, semáforo ou lock — que nunca foi adquirido ou já foi liberado. Isso causa comportamento indefinido: deadlock, corrupção de estado, ou crash da aplicação, porque a operação viola o contrato esperado do recurso.
Uma thread chama pthread_mutex_unlock() sem ter chamado pthread_mutex_lock() antes, ou libera duas vezes o mesmo mutex. O SO ou a biblioteca de threading pode lançar exceção ou deixar o estado interno do mutex corrompido, causando travamento de outras threads.
Use padrões como RAII (Resource Acquisition Is Initialization) — em C++, std::lock_guard ou std::unique_lock — que garantem que toda aquisição tem correspondência com liberação. Em outras linguagens, use blocos try-finally ou context managers para garantir unlock automático mesmo em caso de exceção.