Summary
When a child process is killed by a signal, jumpstarter-exec currently reports exit code 1, which is indistinguishable from a normal failure. Callers cannot tell "SIGTERM during shutdown" from "command failed".
Deferred from PR #910 because the QEMU driver only branches on zero vs non-zero today.
Background
From PR #910:
We can extend the protocol with signal field in Exit and map to 128+signum in a follow-up if needed.
Original review: signal-killed children reported as exit 1.
Proposed approach
- Extend
ServerMessage::Exit with something like signal: Option<i32> (populated via ExitStatusExt::signal())
- Map client-side reported status to
128 + signum when signal-terminated (shell convention), or expose signal explicitly to Python callers
- Update protocol tests and any QEMU driver consumers that should distinguish shutdown vs failure
Acceptance criteria
Tracking
Summary
When a child process is killed by a signal,
jumpstarter-execcurrently reports exit code1, which is indistinguishable from a normal failure. Callers cannot tell "SIGTERM during shutdown" from "command failed".Deferred from PR #910 because the QEMU driver only branches on zero vs non-zero today.
Background
From PR #910:
Original review: signal-killed children reported as exit 1.
Proposed approach
ServerMessage::Exitwith something likesignal: Option<i32>(populated viaExitStatusExt::signal())128 + signumwhen signal-terminated (shell convention), or expose signal explicitly to Python callersAcceptance criteria
128+signum) or exposessignalTracking
rust/jumpstarter-exec/src/{protocol,server,client}.rs