No description
Find a file
Stephen Dennis cebb416c19 test(codiff): add the chain-edge bisection that localised #2019
Knowing chaining is the mechanism does not say WHICH chained edge is
wrong, and with 70 of them in the reproducer that is the difference
between a lead and a location.

2019-chain-bisect.patch adds two scratch knobs to dbt.cpp -- list the
chain targets, and suppress named ones -- and bisect.sh binary-searches
for the smallest set whose suppression makes the failure go away.  It is
a debugging patch, not a proposed change: nothing here is meant to be
merged into the engine.

It converges on one PC out of 70.  Skipping that edge alone: 0/40 wrong.
Skipping the TAKEN side of the same branch: 19/40.  Skipping wc_next's
own entry: 28/40.  Skipping an arbitrary other edge: 28/40.  So the fault
is one specific edge rather than chaining being generally fragile here.

That edge is the fall-through of a shrink-wrapped early-out: gcc sank
wc_next's prologue below the `finished` test, which makes the
fall-through target both a mid-function entry point and a PC that is not
a branch target in the guest at all -- control simply continues into it.
Its sibling, a real branch target, chains correctly.

The sampling matters and is documented in the script: at ~50% failure,
"0 wrong" over 30 runs is a false clean with probability about 1e-9, and
lowering RUNS quietly turns the bisection into a coin flip.

runner.cpp gains the two hooks the patch defines.  They are declared
__attribute__((weak)) and null-checked, because a normal build links the
unpatched dbt.cpp and defines neither -- declaring them plainly breaks
`make test-codiff` at link time, which is how the first version of this
commit was wrong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 20:02:59 -06:00
client fix(color): honour no_flash on live co_render_* paths (#1935) 2026-08-01 19:41:21 -06:00
color
debian
docker
docs Add tools/ansify: MUX percent-color to ANSI (Ragel → C) 2026-08-01 17:12:16 -06:00
hooks
mux Merge pull request #2014 from brazilofmux/chore/rv64-regen-co-reverse 2026-08-03 17:05:50 -06:00
parser
ragel
sgp
specs
testcases fix(jit): stop the shared heap re-entering its own DBT context (#1994) 2026-08-03 13:11:28 -06:00
tests test(codiff): add the chain-edge bisection that localised #2019 2026-08-03 20:02:59 -06:00
tools Add tools/ansify: MUX percent-color to ANSI (Ragel → C) 2026-08-01 17:12:16 -06:00
unix build(release): the win32 source zip has never built; fix the TOC conflicts and validate the lists 2026-08-02 21:03:08 -06:00
utf
win32 build(release): drop four inherited orphans from the win32 source list 2026-08-02 21:22:38 -06:00
.editorconfig
.gitattributes test(perf): PerfSmokeWin — ETW CPU-sampling analog of PerfSmoke (#1920 W1) 2026-07-31 22:50:46 -06:00
.gitignore test(build): track header dependencies in the standalone harnesses (#1952) 2026-08-02 00:06:02 -06:00
AGENTS.md Add tools/ansify: MUX percent-color to ANSI (Ragel → C) 2026-08-01 17:12:16 -06:00
CLAUDE.md docs: correct CHANGES claims invalidated by ten upstream merges 2026-08-02 16:05:42 -06:00
CONTRIBUTING.md
dounix.sh build(release): the win32 source zip has never built; fix the TOC conflicts and validate the lists 2026-08-02 21:03:08 -06:00
dowin32.sh build(release): the win32 source zip has never built; fix the TOC conflicts and validate the lists 2026-08-02 21:03:08 -06:00
GEMINI.md
LICENSE
Makefile test(codiff): run color_ops on every route that executes it, with qemu as oracle 2026-08-03 19:33:37 -06:00