Skip to content

Flaky CI: "Sustained gossipsub soak test (#235)" intermittently deadlocks harness teardown → job hangs for hours #270

Description

@ch4r10t33r

The Sustained gossipsub soak test step in the zig CI job intermittently hangs indefinitely (observed 90+ minutes) instead of its normal duration.

Evidence

Root cause (self-documented)

The test QuicRuntime: gossip saturation race repro (src/transport/quic/runtime.zig) carries this comment:

Soak-gated: a deliberately extreme multi-shard burst (heavier than live) used to REPRODUCE the advanceInboundStreams ist.conn UAF. It is heavy (~50s) and can flakily deadlock the harness teardown under the synthetic overload, so it is excluded from normal CI. Run with -Denable-soak-tests.

So the test itself acknowledges a flaky teardown deadlock under the synthetic overload. It is excluded from zig build test, but a dedicated CI step runs it with -Denable-soak-tests, where the deadlock surfaces and hangs the job (no per-step timeout → the run sits until the 6h GitHub default).

Impact

  • Blocks merges (PR sits UNSTABLE for hours).
  • Wastes a CI runner for hours per occurrence.
  • Trains reviewers to ignore/force-merge, eroding the signal.

Suggested remediation (any of)

  1. Fix the teardown deadlock in the soak harness (the cluster drainer thread join / shutdown ordering under sustained overload) so teardown is deterministic — this is the real fix; the test is valuable.
  2. Add a hard per-step timeout (e.g. timeout-minutes: 10) on the soak CI step so a hang fails fast instead of hanging for hours, plus auto-retry-once.
  3. Add an internal watchdog to the soak test: if the burst/teardown does not complete within N×expected, abort with a clear diagnostic instead of deadlocking.

Until fixed, the practical workaround is cancel + re-trigger (it passes ~most runs).

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