Observed
Run: https://github.com/tikoci/quickchr/actions/runs/28758858863
Failed job: https://github.com/tikoci/quickchr/actions/runs/28758858863/job/85270515858 (Integration (linux/aarch64 · long-term))
This is separate from #69. The issue69-focused run https://github.com/tikoci/quickchr/actions/runs/28758125602/job/85268595976 passed on linux/aarch64 · long-term, and the arm64 REST ordering lab also passed in the failing full-suite job.
Failure shape
- Target:
long-term, resolved in ci-data as RouterOS 7.21.4.
- Host/job: GitHub hosted Linux arm64, QEMU 8.2.2.
- Accel:
quickchr detectAccel(arm64): tcg (crossArch=false, timeoutFactor=4).
- KVM:
/dev/kvm absent; explicit KVM open probe failed.
- Test file:
start-stop.test.ts failed after 788s.
- Failing test:
clean() resets disk to factory defaults — custom users disappear on next boot.
- Failing step: after
instance.stop(); await instance.clean();, QuickCHR.start({ name: "integration-clean-test" }) timed out in _launchExisting().
- Error:
BOOT_TIMEOUT, CHR did not respond within 480s (accel=tcg).
- qemu.log tail only recorded QEMU termination during cleanup, so it did not prove a QEMU launch error.
Relevant artifact data:
start-stop.test.ts 788s fail
(pass) remove() on a running machine stops QEMU and deletes the directory [30466ms]
(fail) clean() resets disk to factory defaults — custom users disappear on next boot [523342ms]
QuickCHRError: CHR did not respond within 480s (accel=tcg). Machine "integration-clean-test" has been cleaned up automatically.
Comparisons
Same run (28758858863):
linux/x86_64 · long-term passed.
macos/arm64 · long-term passed.
windows/x86_64 · long-term passed.
linux/aarch64 · testing passed (7.24rc1).
ci-data rollup currently records:
7.21.4: fail only on linux-arm64; pass on linux-x86, macos-arm64, windows-x86.
7.24rc1: pass on recorded platforms, including linux-arm64.
Why this is interesting
clean() deliberately preserves ARM64 EFI vars because wiping them previously caused a long UEFI device scan. This failure hits the exact 480s same-arch TCG boot timeout after clean, so the investigation should check whether long-term ARM64 CHR is losing/ignoring the expected boot order, whether the cleaned disk path behaves differently on 7.21.4, or whether same-arch TCG simply needs more than 480s for this post-clean boot case.
The recent autosupout.rif observations are worth capturing if RouterOS gets far enough to expose files/logs, but passing #69 probes also generated autosupout entries, so do not assume supout is the root cause without correlation.
Investigation plan
- Reproduce locally on the Intel Mac with ARM64 CHR under cross-arch TCG using a focused script, not the whole suite: create custom user, stop,
clean(), relaunch, capture elapsed times, qemu.log, serial output, and machine dir state before cleanup. Compare long-term, stable, and testing.
- Re-run focused CI:
integration.yml on platforms=linux-arm64, routeros-targets=long-term, test-filter=start-stop.test.ts. If needed, add a temporary lab/probe variant that preserves machine dir and serial/qemu logs on timeout.
- Bucket the result before changing behavior:
- boots after >480s: boot-order scan / timeout-envelope problem;
- never boots and serial/firmware shows disk/UEFI issue:
clean()/EFI/disk path bug;
- only
7.21.4: RouterOS long-term ARM64 behavior difference.
- Do not skip, platform-gate, or simply bump timeouts until one of those buckets is proven.
Observed
Run: https://github.com/tikoci/quickchr/actions/runs/28758858863
Failed job: https://github.com/tikoci/quickchr/actions/runs/28758858863/job/85270515858 (
Integration (linux/aarch64 · long-term))This is separate from #69. The issue69-focused run https://github.com/tikoci/quickchr/actions/runs/28758125602/job/85268595976 passed on
linux/aarch64 · long-term, and the arm64 REST ordering lab also passed in the failing full-suite job.Failure shape
long-term, resolved in ci-data as RouterOS7.21.4.quickchr detectAccel(arm64): tcg (crossArch=false, timeoutFactor=4)./dev/kvmabsent; explicit KVM open probe failed.start-stop.test.tsfailed after 788s.clean() resets disk to factory defaults — custom users disappear on next boot.instance.stop(); await instance.clean();,QuickCHR.start({ name: "integration-clean-test" })timed out in_launchExisting().BOOT_TIMEOUT,CHR did not respond within 480s (accel=tcg).Relevant artifact data:
Comparisons
Same run (
28758858863):linux/x86_64 · long-termpassed.macos/arm64 · long-termpassed.windows/x86_64 · long-termpassed.linux/aarch64 · testingpassed (7.24rc1).ci-data rollup currently records:
7.21.4: fail only onlinux-arm64; pass onlinux-x86,macos-arm64,windows-x86.7.24rc1: pass on recorded platforms, includinglinux-arm64.Why this is interesting
clean()deliberately preserves ARM64 EFI vars because wiping them previously caused a long UEFI device scan. This failure hits the exact 480s same-arch TCG boot timeout after clean, so the investigation should check whether long-term ARM64 CHR is losing/ignoring the expected boot order, whether the cleaned disk path behaves differently on7.21.4, or whether same-arch TCG simply needs more than 480s for this post-clean boot case.The recent
autosupout.rifobservations are worth capturing if RouterOS gets far enough to expose files/logs, but passing #69 probes also generated autosupout entries, so do not assume supout is the root cause without correlation.Investigation plan
clean(), relaunch, capture elapsed times, qemu.log, serial output, and machine dir state before cleanup. Comparelong-term,stable, andtesting.integration.ymlonplatforms=linux-arm64,routeros-targets=long-term,test-filter=start-stop.test.ts. If needed, add a temporary lab/probe variant that preserves machine dir and serial/qemu logs on timeout.clean()/EFI/disk path bug;7.21.4: RouterOS long-term ARM64 behavior difference.