Fallos del 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 o programa principal está usando os mesmos dados. O sinal pode interromper a execução a qualquer momento, causando corrupção de estado, inconsistência de dados ou comportamento imprevisto.
Um servidor web usa um manipulador SIGCHLD para limpar processos filhos. Se esse handler escreve em uma lista global de conexões abertas sem lock, enquanto a thread principal lê a mesma lista, a lista pode ficar corrompida, causando crash ou uso de ponteiros inválidos.
Use apenas funções async-signal-safe dentro de manipuladores (write, kill, exit, etc.). Evite acessar estruturas de dados complexas; prefira sinalizar um atomic flag e fazer o trabalho real fora do handler. Considere usar mecanismos modernos (eventfd, signalfd) em vez de signal handlers quando possível.