Weaknesses of type CWE-820
15 resultsFalta de Sincronização em Acesso Concorrente
Quando múltiplas threads ou processos acessam e modificam o mesmo recurso compartilhado (memória, arquivo, banco de dados) sem mecanismos de sincronização, ocorrem race conditions. Isso pode causar corrupção de dados, estados inconsistentes ou execução não prevista do código.
Duas requisições simultâneas em uma aplicação web incrementam um contador global sem lock. A thread A lê valor 5, a thread B lê valor 5, ambas incrementam para 6 e escrevem — resultado é 6 em vez de 7. Em transações financeiras, isso pode levar a débitos duplos ou créditos perdidos.
Use primitivas de sincronização: locks/mutexes, semáforos, ou estruturas thread-safe (como ConcurrentHashMap em Java). Para banco de dados, confie em transações ACID com níveis de isolamento apropriados. Teste com ferramentas de detecção de race conditions durante desenvolvimento.