The numbers from the rebased branch, and a second shape of test_dev flake

test_reload.exe 25 for 25 after the rebase and the reg_at change, with the
pre-fix binary refusing 4011 of 73306 runs beside it, so the window is known
racy rather than merely quiet.

test_dev flaked twice over while that ran, in two different shapes. Three runs
in six at load 21 were the stale-park rerun, which has a lane. Two of another
six were something else: most of the daemons in the file exiting before they
bound their socket, with no stale socket or daemon left behind, and six green
on a quiet machine after. Neither touches the registry — a daemon that dies
before binding died before any program it builds ran a line of flan_dev.c —
but the second shape does not seem to have been written down anywhere, so it
is written down here.
This commit is contained in:
Joseph Ferano 2026-09-21 12:16:43 +07:00
parent df2f23609b
commit 9ae134beaa

23
FIX.org
View File

@ -5631,6 +5631,29 @@ And independently, by the reviewer, on their own machine and harness: 9 of 72
refused before under 24-way contention, 0 of 120 after, test_reload.exe 20 for refused before under 24-way contention, 0 of 120 after, test_reload.exe 20 for
20, and 10 for 10 again on the rebased merge. 20, and 10 for 10 again on the rebased merge.
Re-run after the rebase and the [flan_dev_reg_at] change, same control
arrangement: test_reload.exe 25 for 25, with the pre-fix binary refusing 4011
of the 73306 runs it managed beside it.
** Two shapes of test_dev flake seen while proving this, neither of them this
Worth recording because the second one does not seem to have a name yet.
Running test_dev.exe six times at load 21 gave three failures. All three were
one shape — [rerun: the program is already running], cascading into every
dev-rerun assertion after it — which is the stale-park in [flan_merged_rerun]
(lib/dev.ml) that has its own lane.
A second six-run batch, while the load average was still falling from that,
gave two failures of a different shape: a daemon exiting with status 1 or 2
"before binding /tmp/flan-devtest-*.sock", across most of the daemons in the
file at once. No stale socket or leftover daemon was found afterwards. Six
more runs on a genuinely quiet machine: six green.
Neither is the registry and neither is this fix. A daemon that dies before it
binds died on the OCaml side of the world, before any program it builds has
run a line of flan_dev.c, and the rerun shape never reads the allocation table
at all. They are noted here only so that the next person who sees red in
test_dev under load has both shapes written down rather than one.
** It also hardens the address root, which was the same spin ** It also hardens the address root, which was the same spin
[flan_dev_reg_at] — the inspector's "what block is this address in" — calls [flan_dev_reg_at] — the inspector's "what block is this address in" — calls
the same [flan_reg_snap] and, unlike the listing, steps *past* a slot it could the same [flan_reg_snap] and, unlike the listing, steps *past* a slot it could