Falhas do tipo CWE-833

25 resultados

Deadlock

Situação em que duas ou mais threads ficam bloqueadas indefinidamente, aguardando uma pela outra para liberar recursos. Ocorre quando há circular wait entre locks — thread A espera recurso preso por B, enquanto B espera recurso preso por A. O programa não falha, mas fica travado.

Exemplo

Thread 1 adquire lock no recurso X e tenta adquirir lock no Y. Simultaneamente, thread 2 adquire lock no Y e tenta adquirir lock no X. Ambas ficam bloqueadas indefinidamente, causando indisponibilidade da aplicação.

Como mitigar

Ordenar a aquisição de locks sempre na mesma sequência (evita circular wait), usar timeouts em operações de lock, ou preferir estruturas thread-safe do framework (concurrent collections em Java, por exemplo) em lugar de locks manuais.