diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-30 15:56:43 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:17 -0300 |
| commit | 007ec29082fcd24764db0405c12f1cdf5638bdca (patch) | |
| tree | 12cf2d8011eebd8f502e7a072f12869e5a81f449 /test | |
| parent | 8598a5fbe6ffecad46891957356d47a37649e547 (diff) | |
| download | pardes-007ec29082fcd24764db0405c12f1cdf5638bdca.tar.gz pardes-007ec29082fcd24764db0405c12f1cdf5638bdca.zip | |
The 9P monkey's chunked read check allows a live file that changed between its two reads
Seed 131 flagged a command pane's tag: the whole read said `running`, the
chunked read on the same open said `exit 0`. A tag is live, not frozen at
the open, and the command ended between the reads, so this was a false
alarm that did not reproduce on replay. A mismatch now counts only when a
third, whole read still differs from the chunks. Seeds 131, 133 and 134 at
3000 steps each run clean.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'test')
| -rw-r--r-- | test/monkey9p.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/test/monkey9p.py b/test/monkey9p.py index fd8c80fa..87e386b3 100644 --- a/test/monkey9p.py +++ b/test/monkey9p.py @@ -1616,7 +1616,10 @@ def chunked_equals_whole(ctx, res): whole_n, chunk_n = dir_names(whole), dir_names(chunked) if whole_n != chunk_n: return f'{path}: whole {whole_n} != chunked({size}) {chunk_n}' - elif whole != chunked: + elif whole != chunked and w.read_all(fid) != chunked: + # A live file (a tag says `running`, then `exit 0`) may change + # between the two reads: only chunks that no whole read matches, + # read again, are a chunking fault. return f'{path}: whole {whole[:200]!r} != chunked({size}) {chunked[:200]!r}' finally: w.clunk(fid) |
