Um Bug Encantador no HyperQueue: SIGTERM e o Mistério dos Dez Segundos

2025-02-24

Um bug curioso surgiu no HyperQueue, um escalonador de tarefas distribuído baseado em Rust. Tarefas, particularmente aquelas dormindo por mais de 10 segundos, terminavam misteriosamente. A depuração revelou uma mudança aparentemente inócua: transferir a geração de processos para `tokio::task::spawn_blocking`. Isso, combinado com `PR_SET_PDEATHSIG` (que envia SIGTERM quando o processo pai morre), causou o problema. A thread worker gerada por `spawn_blocking` estava sendo colhida pelo Tokio após a inatividade, acionando o sinal SIGTERM. O bug foi corrigido revertendo a otimização, destacando as interações sutis entre concorrência, chamadas de sistema e gerenciamento de threads.

Desenvolvimento