mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-10-20 14:45:41 +00:00
b62585475a
A cancelled build left its lock directory behind on the shared tree, so every later build of the same checkout waited for a lock whose owner was gone. The build helper ran each command with a plain fork and killed only the immediate child, so the shell's own workers survived the cancellation and kept the tree in use. XCAT::BuildUtils now runs each command in its own process group, blocks the cancellation signals across the fork so neither side can miss the group, and signals the group rather than the pid. It escalates to KILL, confirms the group is gone, and retains the locks when it is not, so a lock is never released while a worker can still write. xCAT-test/unit/builddebs_lock_cancellation.t captures the defect. It fails without the change. Backport of #7867 to 2.19. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>