Fallos del tipo CWE-764

1 resultado

Múltiplos bloqueios em recurso crítico

Ocorre quando código tenta adquirir o mesmo lock (mutex, semáforo ou similar) mais de uma vez sem liberá-lo, causando deadlock ou travamento. O risco é o programa ficar suspenso indefinidamente, indisponível.

Ejemplo

Uma função adquire um mutex para acessar uma estrutura compartilhada; ao chamar outra função que também tenta adquirir o mesmo mutex, ambas ficam esperando uma pela outra e o sistema congela.

Cómo mitigar

Use locks reentrantes (como `pthread_mutexattr_settype` com `PTHREAD_MUTEX_RECURSIVE` no POSIX), documente a ordem de aquisição de locks em código complexo, ou refatore para evitar chamadas aninhadas que disputam o mesmo recurso.