Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions crates/verify/expectations.toml
Original file line number Diff line number Diff line change
Expand Up @@ -381,3 +381,11 @@ class = "missing"
bound = { count = 1 }
reason = "NEW (bug B1, see loss-time): no fragment of the static recording is complete when the recorder dies, so recovery has nothing (no frames)"
link = "https://github.com/CapSoftware/Cap/pull/2641"

[[xfail]]
case = "crash/recorder-kill/*/static-screen"
class = "fragment-span"
platforms = ["macos"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new xfail requires fragment-span on every macOS encoder path

Medium Severity

On a Mac where VideoToolbox is unavailable and encoder selection falls back to libx264, this static-screen test emits synthetic frames at 3 fps with a nominal rate of 30 fps—not runner-captured frames at 28/60 fps. libx264's 60-frame GOP therefore remains open until 20 seconds, beyond the 11-second kill. No complete fragment exists for check_fragment_spans to report, and the existing loss-time and missing entries cover that outcome. Because this new entry applies to every Mac and defaults to flaky = false, judge_with now reports the absent fragment-span class as fixed and fails the previously accepted run with XPASS. Make this allowance optional or conditional on the encoder path that produces it, while retaining its measurement bounds.

Open in Capy

bound = { count = [1, 20], secs = [2.3, 20.5] }
reason = "NEW (bug B1, see loss-time): since 2026-10-20 the macOS runners deliver the static screen at about 28 fps against a 60 fps nominal rate, so the keyframe interval (120 frames) closes each fragment after about 4 s of capture instead of 2 s; the same commit that passed nightly 39365191761 fails this way in run 39513410142. Bound: fragments no longer than B1's 20 s"
link = "https://github.com/CapSoftware/Cap/actions/runs/39513410142"
4 changes: 3 additions & 1 deletion crates/verify/tests/crash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -857,8 +857,10 @@ fn check_fragment_spans(case: &mut Case, fragments: &[Vec<(u32, f64)>], handed:
let span = next - start;
worst = worst.max(span);
if span > GOP_SECS + (next - end) + 1e-6 {
case.problem(
case.problem_measured(
"fragment-span",
"secs",
(span * 100.0).round() / 100.0,
format!(
"fragment of frames {}..={} covers {span:.2}s of capture, more than {GOP_SECS}s plus the {:.2}s before the frame that closed it",
first.0,
Expand Down
Loading