Falhas do tipo CWE-820
15 resultadosFalta de Sincronização entre Threads
É quando múltiplas threads acessam e modificam um recurso compartilhado (variável, estrutura de dados, arquivo) sem mecanismo de sincronização (locks, mutexes, semáforos). Isso causa race conditions: o resultado depende da ordem impredizível em que as threads executam, levando a corrupção de dados, crashes ou comportamentos incoerentes.
Um contador global incrementado por 10 threads simultaneamente sem lock: em vez de chegar a 10, pode ficar em 3 ou 7 porque leitura e escrita se sobrepõem. Ou uma lista compartilhada onde uma thread itera enquanto outra remove elementos, causando exceção ou skip de itens.
Use primitivas de sincronização: locks (mutex), seções críticas, ou estruturas thread-safe (ConcurrentHashMap em Java, concurrent.Lock em Python). Identifique dados compartilhados e proteja-os desde o design. Teste com ferramentas de detecção de race conditions (ThreadSanitizer, Helgrind).