Skip to content

ci: redirect fuzzer stdout to /dev/null - #1881

Merged
andreiltd merged 1 commit into
mainfrom
fuzzer-stdout
Oct 5, 2026
Merged

andreiltd merged 1 commit into
mainfrom
fuzzer-stdout

Conversation

@andreiltd

Copy link
Copy Markdown
Member

Guest output can exhaust runner log storage. Fuzzer diagnostics use stderr.

Guest output can exhaust runner log storage. Fuzzer diagnostics use stderr.

Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Copilot AI balanced review requested due to automatic review settings October 5, 2026 08:44
@andreiltd andreiltd added the C-bug For PRs that fix bugs label Oct 5, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟢 Approval recommended

The Linux-only redirection safely preserves diagnostics on stderr and command failures.

Review effort: Balanced
Findings: None

What changed in this PR

Suppresses verbose fuzzer and guest stdout to prevent runner log exhaustion while preserving stderr diagnostics and exit status.

Changes:

  • Redirects timed fuzzing stdout to /dev/null.
File Description
.github/​workflows/​dep_fuzzing.yml Suppresses fuzzing stdout in CI.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@hyperlight-gh-bot

Copy link
Copy Markdown

Benchmark Results

Measured commit: 2ce606eaffd2
Baseline commit: c3e1d311b7a6

kvm / amd (Linux) (❌ 3.79x)

Top regressions

  • sandboxes/create_initialized_and_drop/medium — ❌ 3.79x slower

Benchmark Results

function_call_codec

encode_control decode_vec_bytes_copy
byte_chunks 780.26 ns (---)
vec_bytes 582.14 ns (---)
373.82 µs (---)

payload_allocation

slot_pool_segmented
262144 526.73 ns (---)
65536 142.15 ns (---)

sandboxes

create_initialized_and_drop
medium 78.21 ms (❌ 3.79x slower)

slot_pool

alloc_dealloc_1500 alloc_dealloc_4096 alloc_dealloc_128
7.90 ns (---) 7.72 ns (---) 7.76 ns (---)

snapshot_files

load_snapshot_unverified
small 92.64 µs (➖ 1.17x slower)

virtq_readonly

slot_pool_segmented_fragmented slot_pool_segmented
262144 7.20 µs (---) 7.34 µs (---)
65536 2.08 µs (---) 2.06 µs (---)

virtq_readwrite

slot_pool_segmented_fragmented slot_pool_segmented
65536 6.30 µs (---) 6.40 µs (---)
8192 1.09 µs (---) 1.05 µs (---)
262144 27.15 µs (---)
kvm / intel (Linux) (❌ 2.42x)

Top regressions

  • sandboxes/create_initialized_and_drop/medium — ❌ 2.42x slower

Benchmark Results

function_call_codec

encode_control decode_vec_bytes_copy
byte_chunks 744.73 ns (---)
vec_bytes 525.01 ns (---)
654.98 µs (---)

payload_allocation

slot_pool_segmented
262144 502.00 ns (---)
65536 136.19 ns (---)

sandboxes

create_initialized_and_drop
medium 76.16 ms (❌ 2.42x slower)

slot_pool

alloc_dealloc_1500 alloc_dealloc_4096 alloc_dealloc_128
6.93 ns (---) 6.91 ns (---) 6.97 ns (---)

snapshot_files

load_snapshot_unverified
small 45.28 µs (➖ 1.26x slower)

virtq_readonly

slot_pool_segmented_fragmented slot_pool_segmented
262144 7.58 µs (---) 7.61 µs (---)
65536 2.13 µs (---) 2.14 µs (---)

virtq_readwrite

slot_pool_segmented_fragmented slot_pool_segmented
65536 7.03 µs (---) 7.04 µs (---)
8192 750.39 ns (---) 720.61 ns (---)
262144 30.12 µs (---)
mshv3 / amd (Linux) (➖ stable)

No benchmark improved or regressed.

Benchmark Results

function_call_codec

encode_control decode_vec_bytes_copy
byte_chunks 962.27 ns (---)
vec_bytes 703.65 ns (---)
270.64 µs (---)

payload_allocation

slot_pool_segmented
262144 735.75 ns (---)
65536 192.34 ns (---)

sandboxes

create_initialized_and_drop
medium 58.12 ms (➖ 1.24x slower)

slot_pool

alloc_dealloc_1500 alloc_dealloc_4096 alloc_dealloc_128
9.93 ns (---) 9.74 ns (---) 9.74 ns (---)

snapshot_files

load_snapshot_unverified
small 84.69 µs (➖ 1.20x slower)

virtq_readonly

slot_pool_segmented_fragmented slot_pool_segmented
262144 9.01 µs (---) 9.12 µs (---)
65536 2.26 µs (---) 2.45 µs (---)

virtq_readwrite

slot_pool_segmented_fragmented slot_pool_segmented
65536 8.07 µs (---) 8.03 µs (---)
8192 1.27 µs (---) 1.33 µs (---)
262144 36.25 µs (---)
mshv3 / intel (Linux) (➖ stable)

No benchmark improved or regressed.

Benchmark Results

function_call_codec

encode_control decode_vec_bytes_copy
byte_chunks 928.73 ns (---)
vec_bytes 662.33 ns (---)
684.15 µs (---)

payload_allocation

slot_pool_segmented
262144 630.05 ns (---)
65536 165.17 ns (---)

sandboxes

create_initialized_and_drop
medium 68.12 ms (➖ 1.29x slower)

slot_pool

alloc_dealloc_1500 alloc_dealloc_4096 alloc_dealloc_128
8.78 ns (---) 9.65 ns (---) 9.45 ns (---)

snapshot_files

load_snapshot_unverified
small 46.84 µs (➖ 1.24x slower)

virtq_readonly

slot_pool_segmented_fragmented slot_pool_segmented
262144 7.81 µs (---) 7.79 µs (---)
65536 2.28 µs (---) 2.31 µs (---)

virtq_readwrite

slot_pool_segmented_fragmented slot_pool_segmented
65536 7.60 µs (---) 7.61 µs (---)
8192 869.68 ns (---) 878.05 ns (---)
262144 36.54 µs (---)
hyperv-ws2025 / amd (Windows) (➖ stable)

No benchmark improved or regressed.

Benchmark Results

function_call_codec

encode_control decode_vec_bytes_copy
byte_chunks 1.16 µs (---)
vec_bytes 785.73 ns (---)
2.11 ms (---)

payload_allocation

slot_pool_segmented
262144 786.52 ns (---)
65536 232.58 ns (---)

sandboxes

create_initialized_and_drop
medium 85.31 ms (➖ 1.04x faster)

slot_pool

alloc_dealloc_1500 alloc_dealloc_4096 alloc_dealloc_128
11.31 ns (---) 10.23 ns (---) 12.50 ns (---)

snapshot_files

load_snapshot_unverified
small 697.65 µs (➖ 1.13x slower)

virtq_readonly

slot_pool_segmented_fragmented slot_pool_segmented
262144 9.29 µs (---) 10.01 µs (---)
65536 2.44 µs (---) 2.39 µs (---)

virtq_readwrite

slot_pool_segmented_fragmented slot_pool_segmented
65536 8.80 µs (---) 9.12 µs (---)
8192 1.35 µs (---) 1.31 µs (---)
262144 39.74 µs (---)
hyperv-ws2025 / intel (Windows) (➖ stable)

No benchmark improved or regressed.

Benchmark Results

function_call_codec

encode_control decode_vec_bytes_copy
byte_chunks 1.21 µs (---)
vec_bytes 800.19 ns (---)
3.18 ms (---)

payload_allocation

slot_pool_segmented
262144 764.31 ns (---)
65536 220.45 ns (---)

sandboxes

create_initialized_and_drop
medium 108.31 ms (➖ 1.20x slower)

slot_pool

alloc_dealloc_1500 alloc_dealloc_4096 alloc_dealloc_128
10.65 ns (---) 11.30 ns (---) 11.69 ns (---)

snapshot_files

load_snapshot_unverified
small 628.71 µs (➖ 1.35x slower)

virtq_readonly

slot_pool_segmented_fragmented slot_pool_segmented
262144 7.84 µs (---) 7.74 µs (---)
65536 2.34 µs (---) 2.32 µs (---)

virtq_readwrite

slot_pool_segmented_fragmented slot_pool_segmented
65536 8.54 µs (---) 8.62 µs (---)
8192 1.18 µs (---) 1.13 µs (---)
262144 54.98 µs (---)

Reported by cargo ci bench-report --candidate run:37285497664 --baseline run:33932544861 --config-file bench_report.toml.

@andreiltd

Copy link
Copy Markdown
Member Author

Closes: #1854

@andreiltd
andreiltd merged commit b1652ea into main Oct 5, 2026
62 of 63 checks passed
@andreiltd
andreiltd deleted the fuzzer-stdout branch October 5, 2026 10:31
jprendes added a commit to jprendes/hyperlight that referenced this pull request Oct 6, 2026
A pull request is measured against the daily run at the commit it branched
from, found by walking the successful runs of that workflow. Asking GitHub for
only the successful ones is what made it answer out of a cold index: that
listing came back weeks stale in four of ten tries, stably enough that two
replies agreed on it, while the same listing unnarrowed was current every
time. The narrowing happens here now.

PR hyperlight-dev#1881 branched at `66d5dd3e` on 2 October and was reported against
`c3e1d311` from 4 September. Of 114 table cells, 102 held no comparison at
all, because most of the reported benchmarks did not exist a month earlier,
and two configurations announced a regression of 3.79x for a change that
redirects fuzzer output. Reading the same run now finds `66d5dd3e` itself and
fills every cell.

A baseline that far back reads the same as one next door, so the run says how
many commits separate them.

Signed-off-by: Jorge Prendes <jorge.prendes@gmail.com>
jprendes added a commit that referenced this pull request Oct 7, 2026
A pull request is measured against the daily benchmark run at the commit
it branched from. That run was being chosen out of a listing GitHub
served stale, so reports compared against commits weeks older than the
branch point.

PR #1881 branched at `66d5dd3e` on 2 October and was reported against
`c3e1d311` from 4 September. **102 of its 114 table cells held no
comparison at all**, because most of the reported benchmarks did not
exist a month earlier, and two configurations announced a 3.79x
regression for a change that redirects fuzzer output.

## Cause

`run_at` asked GitHub for the successful runs of the workflow. Narrowing
a listing server-side is what leaves it answering out of a cold index:

```
?status=success   newest run 2026-09-06, in 4 of 10 tries
no filter         newest run 2026-10-05, in 5 of 5 tries
```

The runs it omits are indistinguishable from the ones it returns, both
`status=completed conclusion=success`. The existing guard asks until two
replies agree on the newest run, which does not help: the stale answer
is stable, so consecutive replies agree on it.

The narrowing happens locally now, on a `conclusion` field the listing
already carries.

## Also here

The run reports how many commits separate the baseline from the branch
point, read from the comparison it already performs:

```
Pull request 1881 branched at 66d5dd3
Taking benchmarks of 66d5dd3, 0 commits back
```

A baseline a month back reads the same as one next door. This is what
would have made the bug visible the first time it happened.

## Verified

Re-running the same report against the same run:

|          | cells | without baseline | verdicts |
|:---------|------:|-----------------:|:---------|
| before   |   114 |       102 (89%)  | ❌ 3.79x, ❌ 2.42x, stable x4 |
| after    |   114 |         0 (0%)   | stable x6 |

`latest_run_for` still filters by `--branch`, the same class of
server-side narrowing. It measured current in 5 of 5 tries, so this
leaves it alone.

Signed-off-by: Jorge Prendes <jorge.prendes@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-bug For PRs that fix bugs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants