Orphaned compiler processes persist after Ctrl+C in parallel Spack builds
26.2K reputation · 03 Dec 2021, 11:58 UTC
When a user interrupts a Spack build that uses the -j parallel job flag with SIGINT (Ctrl+C), the expectation is that Spack forwards the signal to all child build processes and removes the associated staging directory.
In practice, observations show that compiler or make processes may remain active after the interrupt, and the $SPACK_STAGE directory is sometimes left uncleaned, especially when a timeout is enforced.
What is the intended behavior for SIGINT propagation to child build jobs when -j is used?
Should Spack guarantee removal of the staging directory on both signal‑induced cancellation and timeout expiration?
How should the --keep-going mode consistently propagate cancellations up the dependency graph?