Falhas do tipo CWE-364
20 resultadosCondição de corrida em manipulador de sinal
Ocorre quando um manipulador de sinal (signal handler) acessa ou modifica dados compartilhados sem sincronização adequada, enquanto a thread principal também os acessa. O sinal pode interromper a execução em qualquer momento, criando uma janela onde o estado dos dados fica inconsistente e previsível de forma não determinística.
Um servidor web usa um manipulador SIGUSR1 para recarregar a tabela de configuração. Se a thread principal está atualizando a mesma tabela enquanto o sinal chega, o manipulador pode ler valores parcialmente escritos, causando comportamento indefinido ou corrupção de dados críticos de segurança.
Minimize operações dentro de manipuladores de sinais — idealmente, apenas defina uma flag `volatile sig_atomic_t` para sinalizar o evento. Processe a mudança de estado na thread principal após retorno do sinal. Use sincronização explícita (mutexes, atomic operations) ou redirecione sinais para threads dedicadas com `sigwait()` em vez de manipuladores assíncronos.