From 389e2ec7991be5a914f323326a53db26e7e8094b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Sun, 14 Jun 2026 08:02:13 +0200 Subject: [PATCH] test(gc): raise gc_write_barrier_stress timeout 120s->300s to de-flake CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two stress binaries run under PERRY_GC_FORCE_EVACUATE=1 + PERRY_GC_VERIFY_EVACUATION=1 (copy every object + full-heap verify scan per GC cycle). Measured ~1.5s normal vs ~21s under that config on a fast host, which scales to ~60-130s on slower/loaded CI runners — right at the 120s budget, so the cargo-test job intermittently timed out (panic at the run deadline) regardless of the PR's changes. The tests assert correctness (BARRIER_STRESS_OK), not speed, so widen the deadline rather than trim the stress coverage. --- crates/perry/tests/gc_write_barrier_stress.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/perry/tests/gc_write_barrier_stress.rs b/crates/perry/tests/gc_write_barrier_stress.rs index ecf6fcc7e4..f2618e72b8 100644 --- a/crates/perry/tests/gc_write_barrier_stress.rs +++ b/crates/perry/tests/gc_write_barrier_stress.rs @@ -36,7 +36,16 @@ const SIGTERM: i32 = 15; #[cfg(unix)] const SIGKILL: i32 = 9; -const COMPILED_BINARY_TIMEOUT: Duration = Duration::from_secs(120); +// These stress binaries run under the slowest GC configuration — +// `PERRY_GC_FORCE_EVACUATE=1` copies every marked object on every cycle and +// `PERRY_GC_VERIFY_EVACUATION=1` adds a full-heap pointer-verification scan +// after each one. The churn workload takes ~1.5s normally but ~20s under +// that config on a fast host, which scales to ~60-130s on the slower, shared, +// heavily-parallel CI runners — right at the old 120s budget, so the job +// flaked (timeout panic) whenever the runner was loaded. The test asserts +// *correctness* (`BARRIER_STRESS_OK`), not speed, so give it generous +// wall-clock headroom rather than trimming the stress coverage. +const COMPILED_BINARY_TIMEOUT: Duration = Duration::from_secs(300); fn perry_bin() -> PathBuf { PathBuf::from(env!("CARGO_BIN_EXE_perry"))