Skip to content

CI: savevm monitor command times out against a flat 5s budget (windows-x86 TCG and macos-x86 HVF) #80

Description

@mobileskyfi

Current signature

QEMU snapshot creation intermittently exceeds the generic 5 s monitorCommand() deadline:

  • originally observed in disk.test.ts on windows-x86/TCG;
  • reproduced in run 30507484030 by the rollback example on macos-x86/HVF;
  • recent Windows full-suite runs were green, so the defect is intermittent/load-sensitive rather than Windows- or TCG-specific.

The #101 phase breakdown on the macOS recurrence is decisive:

connect=1ms first-byte=2ms prompt=2ms command-written=3ms
response-first-byte=3ms bytes=545

The monitor connected, greeted, accepted savevm, and streamed 545 bytes before the wrapper timed out at 5000 ms. This rules out connect/prompt failure and strongly supports a legitimate long-running savevm operation being forced through the flat fast-query default.

Defect

QuickCHR.snapshot() calls monitorCommand(..., undefined, ...), inheriting the 5 s default used for short commands such as info status. savevm writes guest RAM plus disk delta and its duration depends on host disk/load and accelerator/runtime class. It needs an operation-specific deadline; raising the global monitor default would make unrelated monitor wedges slower to detect.

Proposed approach

  1. Define measured operation budgets for savevm, loadvm, and delvm separately from fast monitor queries.
  2. Pass the relevant explicit budget from the QuickCHR snapshot operations rather than changing the generic default.
  3. Preserve the existing timeout phase/byte-count evidence and add an anchor test for it.
  4. Reproduce with targeted disk.test.ts/rollback runs on macos-x86 HVF and windows-x86 TCG, including a deliberately constrained deadline to verify the failure path.
  5. Coordinate the nesting with CI: retune oversized boot envelopes from path-specific timing data without losing forensic headroom #106/CI: evidence-preserving per-file watchdog and incremental run ledger #77 so operation timeout + cleanup/forensics fits inside the enclosing test/file cap.

Done-when

  • Long snapshot operations use explicit, measurement-backed deadlines; fast monitor queries retain a tight default.
  • Timeout errors retain connect/prompt/write/response phase timings and received-byte count.
  • Targeted macos-x86 HVF and windows-x86 TCG snapshot/rollback runs pass repeatedly, and a forced timeout remains an honest attributed failure.
  • The budget contract is documented in the QEMU/CI instructions as appropriate.

Independent Wave 1 work under #110; it does not block #109 or #77.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2active improvement with clear shapearea:ciCI workflows, publish, verification matrixarea:library-apiQuickCHR/ChrInstance public API for consumersarea:qemuQEMU/CHR boot, virtio, acceleration, channelsbugSomething isn't workingplatform:macMac-specifc issueplatform:windowsMikrosoft Windows specific issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions