Brummel
a2808a6938
test(codegen): ignored RED pin for match-arm consume-split leak ( #63 leg 3)
...
The third and final identified leg of #63 : an owned heap param consumed
on one match arm but live on a sibling fall-through arm is never
dropped, because both codegen drop sites (the fn-return Own-param dec in
lib.rs and the pre-tail-call dec in match_lower.rs) gate on the per-fn
AGGREGATE consume_count. When the param is consumed on one arm
(aggregate >= 1) but live on another, the gate skips the drop on the
live arm too. This is the residual that keeps examples/series_sma.ail at
live=2 after legs 1 and 2.
Series-free minimal repro (a `Box` consumed on the `On` arm, live on the
`Off` fall-through arm; main takes the `Off` path): `live=1` today.
Committed #[ignore]: unlike legs 1 and 2, this is NOT a contained fix.
The per-arm/per-path consume information is destroyed by the worst-case
`max` merge in uniqueness.rs (`merge_states`) before MIR — MArm carries
only {pat, body}, MirDef.consume is the per-fn aggregate — so codegen
has no per-arm liveness to gate a fall-through drop on. Closing it needs
a memory-model change (retain per-arm consume, surface it to codegen,
emit the drop only on the live arm, never at the post-match join or the
consuming arm — a live double-free hazard) and a fresh brainstorm cycle.
The pin is committed ignored so the precise symptom and minimal repro
are durable; un-ignore when the fix ships. The assertion is a correct
symptom pin (live == 0); only the fix mechanism is undecided.
refs #63
2026-06-02 13:59:09 +02:00
..
2026-06-02 13:22:30 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-01 16:41:21 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-01 17:57:40 +02:00
2026-06-01 18:12:25 +02:00
2026-06-01 17:44:40 +02:00
2026-06-01 18:22:59 +02:00
2026-06-01 18:22:59 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-05-21 01:16:21 +02:00
2026-06-02 00:03:46 +02:00
2026-05-13 11:12:48 +02:00
2026-05-13 11:12:48 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-01 15:38:32 +02:00
2026-06-01 15:38:32 +02:00
2026-06-01 15:38:32 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 13:59:09 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 12:36:01 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-01 15:38:32 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 12:59:34 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 13:46:06 +02:00
2026-06-02 13:31:54 +02:00
2026-05-13 11:12:48 +02:00
2026-05-13 11:12:48 +02:00
2026-06-02 00:03:46 +02:00
2026-05-13 11:12:48 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-05-13 11:12:48 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-05-13 11:12:48 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00
2026-06-02 00:03:46 +02:00