[BUG] Release single foreground-interrupt CI probe fails with vm-stall receipt #45

Open
opened 2026-09-13 06:06:09 +02:00 by erikinkinen · 0 comments
Owner

Summary

The release image's single foreground-interrupt probe fails in Integration push CI 1589 after all 486 catalog scenarios and earlier image/input gates pass. The runner reports vm-stall and returns 1. This is the ordinary inherited-input/foreground-interrupt gate; the later repeated-interrupt gates have not run. The cause remains unknown.

Reproduction

Observed in the maintained workflow at Integration revision 07c41b6b082ceb4e5a7fb3af0f4b3a5148b37905:

./tests/interactive-shell-interrupt-vm.sh out/appliance/erix-release.img

This requires the workflow's preceding source, build and image preparation. The wrapper selects physical input and interactive-interrupt. Its single cycle starts /bin/cat, confirms terminal echo and live cat output, sends Ctrl+C, requires status 130 and a fresh prompt, then runs /bin/echo AFTERINT and requires its output and a fresh prompt. No isolated reproduction, frequency or unchanged retry is established by this report.

Expected and actual behavior

Expected: the exact ordered interrupt and following-command witnesses pass within the existing 120-second VM limit, 15-second serial-progress limit and 10-second command limit, allowing subsequent gates to execute.

The development single-interrupt probe passes at 03:47:20.026 UTC on September 13, 2026. The release probe begins at 03:47:20.406 UTC and reports at 03:47:39.184 UTC:

vm diagnostic: stage=vm-stall runner_exit=1 vm_exit=125 expected_vm_exit=0 physical_input_exit=unknown serial_input_exit=unknown physical_cleanup_requested=1

The original runner classifies composed status 125 as a stall when its stall limit is enabled. vm_exit is the waited watchdog/timeout/QEMU command status, not an independently recovered raw QEMU exit. Physical input cleanup was requested; this summary does not contain an independently recorded terminal injector result. The top-level log does not reveal the last accepted input/guest milestone, which command failed, or the specific origin of 125. The wrapper returns 1 before its ordered milestone acceptance.

Environment and identity

  • Integration push run 1589, API run 9097, exact revision 07c41b6b082ceb4e5a7fb3af0f4b3a5148b37905.
  • Integration job 19572, attempt 1, fails; Rust job 19571 and Markdown job 19573 succeed. The API records terminal completion at 03:48:28 UTC on September 13, 2026.
  • The selected wrapper uses a private copy of the workflow-built release image, matching OVMF inputs, x86-64 QEMU, one vCPU and physical QMP keyboard input. The 120/15/10-second limits remain unchanged.
  • Seventeen original Integration blobs bind the workflow, catalog runners, interrupt adapters, shared runner, watchdog and diagnostic decoder. The source-selected image graph includes Rootd ac3c1847af9915164d4a819f5f15e1827884e8b1; no current branch head is substituted.
  • The image digest, inner serial/input/QEMU evidence, effective acceleration and complete compiler/firmware/QEMU executable identities were not independently inspected. Source selection is not complete execution-environment equality or proof of an introducing revision.

Evidence and prior checks

All three complete job logs are retained, totaling 13,253,986 bytes, with no diagnostic warning candidates. The main log SHA-256 is 2da28ef0ed87de741537cd058bf226e5c36587d6c8ebcc41c07a15c6fce963a2.

The main log reports passed=486 failed=0 total=486 at 03:37:51.528 UTC. All 486 distinct actual worker pass witnesses are bound to the original scenario blobs; earlier synthetic fixture summaries are excluded. The watchdog and process/source host groups pass. Post-catalog success includes development disk rebuild equality, image metadata/closure gates, both canonical interactive images, development native launch and serial input, all four development/release physical/COM1 separate-line probes, and the development single-interrupt probe.

The failure precedes both repeated-interrupt gates and all later prompt/directory/time/editor checks. Output artifact listings do not recover their inner bytes. No artifact download, guest replay, deadline relaxation, source correction, shared-cause or host-contention claim is made.

Tracking

Coordinate through Integration PR 12. Issue 31 tracks the later release nine-cycle repeated-interrupt probe, with a different adapter and milestone contract. Similar diagnostic fields do not establish a shared cause. The same-head PR run 1590 instead fails the ext4 truncate scenario, tracked in issue 44.

The fresh issue inventory contains no equivalent ordinary release single-interrupt failure. Preserve this terminal observation and obtain the exact retained input/VM evidence before proposing a correction. Any correction must preserve the existing interrupt/status/prompt assertions and deadlines, followed by acceptance of this gate and the remaining workflow.

## Summary The release image's single foreground-interrupt probe fails in Integration push CI 1589 after all 486 catalog scenarios and earlier image/input gates pass. The runner reports `vm-stall` and returns 1. This is the ordinary inherited-input/foreground-interrupt gate; the later repeated-interrupt gates have not run. The cause remains unknown. ## Reproduction Observed in the maintained workflow at Integration revision `07c41b6b082ceb4e5a7fb3af0f4b3a5148b37905`: ```sh ./tests/interactive-shell-interrupt-vm.sh out/appliance/erix-release.img ``` This requires the workflow's preceding source, build and image preparation. The wrapper selects physical input and `interactive-interrupt`. Its single cycle starts `/bin/cat`, confirms terminal echo and live cat output, sends Ctrl+C, requires status 130 and a fresh prompt, then runs `/bin/echo AFTERINT` and requires its output and a fresh prompt. No isolated reproduction, frequency or unchanged retry is established by this report. ## Expected and actual behavior Expected: the exact ordered interrupt and following-command witnesses pass within the existing 120-second VM limit, 15-second serial-progress limit and 10-second command limit, allowing subsequent gates to execute. The development single-interrupt probe passes at 03:47:20.026 UTC on September 13, 2026. The release probe begins at 03:47:20.406 UTC and reports at 03:47:39.184 UTC: ```text vm diagnostic: stage=vm-stall runner_exit=1 vm_exit=125 expected_vm_exit=0 physical_input_exit=unknown serial_input_exit=unknown physical_cleanup_requested=1 ``` The original runner classifies composed status 125 as a stall when its stall limit is enabled. `vm_exit` is the waited watchdog/timeout/QEMU command status, not an independently recovered raw QEMU exit. Physical input cleanup was requested; this summary does not contain an independently recorded terminal injector result. The top-level log does not reveal the last accepted input/guest milestone, which command failed, or the specific origin of 125. The wrapper returns 1 before its ordered milestone acceptance. ## Environment and identity - [Integration push run 1589](https://git.erikinkinen.fi/erix/integration/actions/runs/1589), API run 9097, exact revision `07c41b6b082ceb4e5a7fb3af0f4b3a5148b37905`. - Integration job 19572, attempt 1, fails; Rust job 19571 and Markdown job 19573 succeed. The API records terminal completion at 03:48:28 UTC on September 13, 2026. - The selected wrapper uses a private copy of the workflow-built release image, matching OVMF inputs, x86-64 QEMU, one vCPU and physical QMP keyboard input. The 120/15/10-second limits remain unchanged. - Seventeen original Integration blobs bind the workflow, catalog runners, interrupt adapters, shared runner, watchdog and diagnostic decoder. The source-selected image graph includes Rootd `ac3c1847af9915164d4a819f5f15e1827884e8b1`; no current branch head is substituted. - The image digest, inner serial/input/QEMU evidence, effective acceleration and complete compiler/firmware/QEMU executable identities were not independently inspected. Source selection is not complete execution-environment equality or proof of an introducing revision. ## Evidence and prior checks All three complete job logs are retained, totaling 13,253,986 bytes, with no diagnostic warning candidates. The main log SHA-256 is `2da28ef0ed87de741537cd058bf226e5c36587d6c8ebcc41c07a15c6fce963a2`. The main log reports `passed=486 failed=0 total=486` at 03:37:51.528 UTC. All 486 distinct actual worker pass witnesses are bound to the original scenario blobs; earlier synthetic fixture summaries are excluded. The watchdog and process/source host groups pass. Post-catalog success includes development disk rebuild equality, image metadata/closure gates, both canonical interactive images, development native launch and serial input, all four development/release physical/COM1 separate-line probes, and the development single-interrupt probe. The failure precedes both repeated-interrupt gates and all later prompt/directory/time/editor checks. Output artifact listings do not recover their inner bytes. No artifact download, guest replay, deadline relaxation, source correction, shared-cause or host-contention claim is made. ## Tracking Coordinate through [Integration PR 12](https://git.erikinkinen.fi/erix/integration/pulls/12). [Issue 31](https://git.erikinkinen.fi/erix/integration/issues/31) tracks the later release nine-cycle repeated-interrupt probe, with a different adapter and milestone contract. Similar diagnostic fields do not establish a shared cause. The same-head PR run 1590 instead fails the ext4 truncate scenario, tracked in [issue 44](https://git.erikinkinen.fi/erix/integration/issues/44). The fresh issue inventory contains no equivalent ordinary release single-interrupt failure. Preserve this terminal observation and obtain the exact retained input/VM evidence before proposing a correction. Any correction must preserve the existing interrupt/status/prompt assertions and deadlines, followed by acceptance of this gate and the remaining workflow.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
erix/integration#45
No description provided.