Skip to content

ci: Rust Integration Tests job is failing across branches — validators_and_full_nodes_reach_height_3 killed by SIGKILL #298

Description

@0xrlawrence

Summary

The Rust Integration Tests job is currently red on unrelated branches, including Circle's own sync/v0_8_0. In each case the same test is killed by the OOM killer:

SIGKILL [9.729s] (11/13) arc-test-integration::basic validators_and_full_nodes_reach_height_3
(test aborted with signal 9: SIGKILL)
Summary [65.769s] 11/13 tests run: 10 passed, 1 failed, 0 skipped
warning: 2/13 tests were not run due to signal
error: test run failed

This does not look branch-specific, so I wanted to flag it rather than assume it is known.

Affected runs

Branch Run Result
sync/v0_8_0 (internal release sync) 33160093215 SIGKILL, same test
fix/executor-cumulative-gas-overflow 33372562134 Rust Integration Tests failed
fix/key-file-permissions (mine, #288) 33388046314 SIGKILL, same test

The sync/v0_8_0 failure is dated 2026-08-28 and has the identical 10 passed, 1 failed split, so this predates the PRs above.

Notes on the failing test

crates/test/integration/tests/basic.rs:65. From the run logs it brings up seven nodes (node-0 through node-6) in-process. The job runs on ubuntu-latest and already passes --test-threads 1 (ci.yml:133), so test-level parallelism is not the cause; a single test appears to exceed the runner's memory.

For what it is worth, I saw this same binary reach roughly 7.3 GB RSS when running cargo test --workspace on a 7 GB VM, where the kernel OOM killer reported:

Out of memory: Killed process (basic-5d309b0f0) total-vm:21601360kB, anon-rss:7349572kB

I have not been able to determine whether the failure is deterministic or marginal, so I cannot say whether it is a genuine memory regression or a test that has simply grown past the runner budget.

Possibly related: the nextest ci profile is never used

.config/nextest.toml defines a [profile.ci] (line 8) with fail-fast = false (line 11) and retries (line 15):

[profile.ci]
fail-fast = false
retries = { backoff = "exponential", count = 2, delay = "1s", max-delay = "10s" }

None of the three CI invocations pass --profile ci:

  • ci.yml:91cargo nextest run --locked --workspace --exclude arc-test-integration
  • ci.yml:133cargo nextest run --locked -p arc-test-integration --test-threads 1
  • ci.yml:139cargo nextest run --locked --workspace --exclude arc-test-integration --features integration

So CI runs under [profile.default], which sets fail-fast = true and no retries. That matches the observed 2/13 tests were not run due to signal: the run aborts rather than completing, and the failing test is never retried.

To be clear about what this is and is not: wiring up --profile ci would give fuller failure reporting and would retry a flaky test, but if the OOM is deterministic it will not fix the underlying problem. I am flagging it as a likely-unintended gap, not as a fix.

Happy to open a PR for the --profile ci wiring if that is useful. The memory issue itself looks like it needs someone with more context on the integration harness.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions