Weaknesses of type CWE-765
1 resultDesbloqueio múltiplo de um recurso crítico
Ocorre quando o código libera (unlock) uma mutex, semáforo ou outro mecanismo de sincronização mais de uma vez sem ter feito lock correspondente. Isso quebra o estado da proteção do recurso, permitindo race conditions e acesso concorrente não sincronizado a dados compartilhados.
Um thread faz pthread_mutex_unlock() duas vezes no mesmo mutex: na primeira liberação funciona, mas na segunda causa undefined behavior (erro ou travamento). Entretanto, entre os dois unlocks, outro thread pode ter adquirido o lock, e a segunda liberação o desbloqueia prematuramente, expondo dados compartilhados a acesso concorrente.
Mantenha contagem rigorosa de lock/unlock em pareamento exato — use RAII (Resource Acquisition Is Initialization) ou lock guards em C++, ou ferramentas de análise estática que detectam desequilíbrios. Em código legado, revise caminhos de exceção e retorno antecipado para garantir que todo lock tenha exatamente um unlock correspondente.