Un bug mignon dans HyperQueue : SIGTERM et le mystère des dix secondes
Un bug curieux est apparu dans HyperQueue, un ordonnanceur de tâches distribué écrit en Rust. Les tâches, en particulier celles qui dorment plus de 10 secondes, se terminaient mystérieusement. Le débogage a révélé un changement apparemment anodin : le déchargement de la création de processus vers `tokio::task::spawn_blocking`. Cela, combiné à `PR_SET_PDEATHSIG` (qui envoie SIGTERM à la mort du processus parent), a causé le problème. Le thread worker créé par `spawn_blocking` était récupéré par Tokio après une période d’inactivité, déclenchant le signal SIGTERM. Le bug a été corrigé en revenant à la version précédente de l’optimisation, soulignant les interactions subtiles entre la concurrence, les appels système et la gestion des threads.