test_nflib_proc's fd1-flush test flakes under CPU contention on the 2-core Linux box nf-7vb ← Beads

open priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/605 by tools/beads/import_github.py's reconcile pass.

Filed unclaimed and unlabelled from nf-dev-history-charter while gating #600not from that PR, which is docs plus one new test file.

tools/tests/test_nflib_proc.py::StreamAndTeeTest::test_the_parent_is_flushed_before_the_child_inherits_fd1 failed once in four consecutive ./presubmit.py --suite python runs on the Linux gating VM:

``` FAIL: test_the_parent_is_flushed_before_the_child_inherits_fd1 ⚠ #470 F6, the sharp one. AssertionError: 'PARENT-BEFORE' not found in '' : the parent's line was lost in its own buffer when the streamed child was killed ```

Evidence it is contention, not a regression:

Why it matters more than an ordinary flake. This box is the studio's gating host and merge_pr.py refuses to merge on a red presubmit. A flake here doesn't just cost a re-run — it blocks a merge, and the natural read of a one-off failure is "my change broke it", which costs a session a diagnostic detour it has no reason to expect. The box has 2 cores and routinely runs two or three dev sessions at once, so contention is the normal operating condition, not an edge case.

The test asserts an ordering between a parent's buffered write and a killed child's inherited fd1 — genuinely timing-shaped. Related but distinct: #598 (a probe that fails in the sweep and passes standalone) is the same symptom class in the probe tier, and #572 / #579 cover the known Linux probe failures.

Not attempting a fix — I don't want to weaken an assertion that #470 F6 was paid for. Whoever takes it should decide between making the synchronisation explicit and marking it contention-sensitive.

Dependencies

None.

Comments

No comments.

Add a comment