Fallos del tipo CWE-567

5 resultados

Acesso não sincronizado a dados compartilhados em contexto multithreaded

Ocorre quando múltiplas threads acessam e modificam a mesma variável ou estrutura de dados sem mecanismos de sincronização (mutex, semáforo, lock). Isso causa race conditions, onde o resultado final depende da ordem de execução das threads, levando a corrupção de dados, comportamento impredizível ou crashes.

Ejemplo

Uma aplicação Java com várias threads atualizando um contador global sem usar synchronized ou AtomicInteger. Duas threads leem o valor 5 simultaneamente, incrementam para 6 e escrevem de volta, perdendo uma das operações. O contador deveria ser 7, mas fica 6.

Cómo mitigar

Use primitivas de sincronização apropriadas: synchronized (Java), locks (C++), ou classes thread-safe como ConcurrentHashMap e AtomicInteger. Sempre proteja leitura e escrita de dados compartilhados com o mesmo mecanismo de lock durante toda a operação crítica.