Repository navigation
COPAUA0C: state the request-limit exit (line 339) as unprovable by name, re-proved record (Part of #5278) - #6153
Conversation
…me, re-proved record (Part of #5278) The reply STRING pointer is never reset, so a fourth reply in one task reads one byte past the 200-byte buffer: undefined in IBM, refused by the det port. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No description provided. |
|
PR #6153 @ bc14b99: 1 failed check(s) == det (failure) -- real |
…ed (Part of #5278) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
CI shepherd: the head of this PR (b3955b0) is not the one a maintainer labelled |
|
No description provided. |
|
No description provided. |
Part of #5278.
Checklist: partial [c:0c25aa7e] -- the COPAUA0C case and proven record already exist (22 scenarios, merged earlier); two branches stay uncovered: line 339 true (stated unprovable here) and line 963 false (MQCLOSE failure, needs MQ fault injection, own PR); the
(verify)blockers.txt line is read on the next generated run.What this does
Tried to cover COPAUA0C line 339 (
WS-MSG-PROCESSED > WS-REQSTS-PROCESS-LIMIT, true) with a 502-request scenario (arepeatkey on a stated MQ message). The run showed the branch cannot be proved:WS-RESP-LENGTH(line 46,VALUE 1) is theSTRING ... WITH POINTERof every reply (730) and is never reset, so a task's replies pile up in the 200-byteW02-PUT-BUFFER; the MQPUT1 length (756) is the pointer.IndexOutOfBounds [0,201) of 200). IBM leaves that read undefined, so no defined proof reaches 501 requests.repeatkey were dropped (not shipped). The case'snotesnow state the branch as unprovable by name; a test pins the facts in the source (lines 46, 108, 339, the threeWS-RESP-LENGTHuses); the record was re-proved (evidence.py prove: proven, 22 runs, 7 fault runs, no differences; coverage unchanged at 62/69 branches).Class: COPAUA0C branches no defined input reaches vs. ones a scenario can add. Class table: 339 true = undefined-behaviour (this PR, by name); 700 x5 = infeasible (stated, #6108); 963 false = needs MQ fault injection (sibling gap).
Gates
pr_gates --fast7/7,--ratchets9/9 (via heavy-run.sh, JDK 17),test_evidence.py47 passed, tree-wide guards 85 passed, the case test file 9 passed.Lessons for agents
STRING ... WITH POINTERacross loop iterations (never reset) makes a bounded buffer overrun after a few iterations: check the pointer before designing a high-count scenario.🤖 Generated with Claude Code