Fallos del tipo CWE-832

1 resultado

Liberaçã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.

Ejemplo

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.

Cómo mitigar

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.