From bd7f2afa22470fb3ef553eff41116a7b629466c8 Mon Sep 17 00:00:00 2001 From: "cyrus@tinyhumans.ai" Date: Tue, 30 Jun 2026 18:56:22 +0530 Subject: [PATCH 1/2] ci(coverage): raise RUST_MIN_STACK so llvm-cov runs don't stack-overflow The Rust Core Coverage lane aborts with a stack overflow in cron::scheduler::tests::run_agent_job_returns_error_without_provider_key (introduced by #4166). The test drives the full agent harness; under cargo-llvm-cov, instrumentation inflates per-frame stack usage enough to blow libtest's default ~2 MB per-test-thread stack, SIGABRTing the whole run. Set RUST_MIN_STACK=64MB for both coverage jobs so instrumented test threads have headroom. CI-only; no source/test changes. Virtual address reservation only, so no real memory cost. --- .github/workflows/pr-ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index 2e18d45146..c51633a033 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -349,6 +349,13 @@ jobs: # the maximum-shrink setting; line-tables-only was still too large for the # instrumented build. CARGO_PROFILE_DEV_DEBUG: "0" + # cargo-llvm-cov instrumentation inflates per-frame stack usage, so deep + # async tests (e.g. cron::scheduler agent-job tests that drive the full + # harness) overflow the default ~2 MB test-thread stack and SIGABRT the + # whole run with "stack overflow". Give libtest's per-test threads a large + # stack so coverage runs don't abort. (Virtual reservation only — no real + # memory cost.) + RUST_MIN_STACK: "67108864" steps: - name: Free disk space run: | @@ -425,6 +432,9 @@ jobs: # __llvm_covmap/__llvm_covfun sections, NOT from DWARF, so coverage # numbers are unaffected. Mirrors rust-core-coverage. CARGO_PROFILE_DEV_DEBUG: "0" + # Large test-thread stack so coverage instrumentation's inflated frames + # don't overflow deep async tests. Mirrors rust-core-coverage. + RUST_MIN_STACK: "67108864" steps: - name: Free disk space run: | From 253ff50f99c88ae86662a334ecb528f611170959 Mon Sep 17 00:00:00 2001 From: "cyrus@tinyhumans.ai" Date: Tue, 30 Jun 2026 19:33:04 +0530 Subject: [PATCH 2/2] ci(coverage): bump Rust Core Coverage timeout to 50m for the full run MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With the stack-overflow fixed (RUST_MIN_STACK), the coverage job now runs the entire instrumented test suite end-to-end instead of aborting early — which exceeds the old 30-min budget. Raise timeout-minutes 30 -> 50. The last run showed all tests passing (zero overflow) right up to the 30-min cutoff, so it just needs more wall-time. --- .github/workflows/pr-ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index c51633a033..a257e6f064 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -336,7 +336,11 @@ jobs: needs: [changes, rust-quality] if: always() && needs.changes.outputs['rust-core'] == 'true' && needs['rust-quality'].result == 'success' runs-on: ubuntu-22.04 - timeout-minutes: 30 + # 30 min was only ever enough because a stack overflow aborted the run early + # (see RUST_MIN_STACK below). With the overflow fixed the job runs the full + # instrumented suite (~13.6k tests, single-threaded build) end-to-end, which + # needs more wall-time. + timeout-minutes: 50 container: image: ghcr.io/tinyhumansai/openhuman_ci:rust-1.93.0 env: