You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test_gap_fetch_request_from_node_incoming_message dies with SIGABRT (exit
134) after printing 5 lines, while node exits 0 with len=55 match=true.
It is not a flake, and it is not in the allowlist
3/3 reproducible on a build of pristine origin/main (38ff7eccc, --profile perry-dev, macOS arm64), via ./run_parity_tests.sh --filter test_gap_fetch_request_from_node_incoming_message.
Absent from test-parity/known_failures.json, so nothing is suppressing it —
it is simply not being run by anything that can block a merge.
parity is tag-gated (v0.5.1018), so a gap regression in this family is only
judged at release time, not per merge. That is the mechanism CLAUDE.md's hazard
list describes and the one #7580 already paid for in test_gap_diagchannel_*.
This crash may therefore be considerably older than its discovery date.
What the test does
#6432's regression cover: new Request(url, { body: req, duplex: "half" })
where req is a Node http.IncomingMessage, read back through request.text(). It starts a real node:http server on port 18994, POSTs to
itself with http.request, and compares the body length. Node prints:
len=55 match=true
expected len=55
Perry prints five lines and then aborts. The abort is a signal death rather
than an output mismatch, so the harness classifies it CRASH, not FAIL.
Suggested next step
Run it under PERRY_GC_ZEAL=1 PERRY_GC_PROTECT_FROMSPACE=1 with a raised PERRY_GC_PROTECT_FROMSPACE_DEPTH, and bisect. A deterministic abort in a path
that mixes a native small-handle body (IncomingMessage) with the Web Request
reader is the shape CLAUDE.md flags as "a perfectly reproducible GC bug means a
table, not a register" — worth checking the gc_register_mutable_root_scanner
registry for the http/fetch side tables before assuming a register.
Either way the first fix is procedural: if it is going to stay red, it needs a known_failures.json entry with provenance so parity_known_failures.py --audit
can see it.
test_gap_fetch_request_from_node_incoming_messagedies with SIGABRT (exit134) after printing 5 lines, while node exits 0 with
len=55 match=true.It is not a flake, and it is not in the allowlist
origin/main(38ff7eccc,--profile perry-dev, macOS arm64), via./run_parity_tests.sh --filter test_gap_fetch_request_from_node_incoming_message.test-parity/known_failures.json, so nothing is suppressing it —it is simply not being run by anything that can block a merge.
arms, so it is unrelated to that change; it is reported here rather than
passed over, because "fails on clean
maintoo" is not the same as "flake".Why it has been able to hide
parityis tag-gated (v0.5.1018), so a gap regression in this family is onlyjudged at release time, not per merge. That is the mechanism CLAUDE.md's hazard
list describes and the one #7580 already paid for in
test_gap_diagchannel_*.This crash may therefore be considerably older than its discovery date.
What the test does
#6432's regression cover:new Request(url, { body: req, duplex: "half" })where
reqis a Nodehttp.IncomingMessage, read back throughrequest.text(). It starts a realnode:httpserver on port 18994, POSTs toitself with
http.request, and compares the body length. Node prints:Perry prints five lines and then aborts. The abort is a signal death rather
than an output mismatch, so the harness classifies it CRASH, not FAIL.
Suggested next step
Run it under
PERRY_GC_ZEAL=1 PERRY_GC_PROTECT_FROMSPACE=1with a raisedPERRY_GC_PROTECT_FROMSPACE_DEPTH, and bisect. A deterministic abort in a paththat mixes a native small-handle body (
IncomingMessage) with the WebRequestreader is the shape CLAUDE.md flags as "a perfectly reproducible GC bug means a
table, not a register" — worth checking the
gc_register_mutable_root_scannerregistry for the http/fetch side tables before assuming a register.
Either way the first fix is procedural: if it is going to stay red, it needs a
known_failures.jsonentry with provenance soparity_known_failures.py --auditcan see it.