bnjbvr opened PR #4107 from fix-value-label-range
to release-0.36.0
:
I see this code has disappeared from
main
with the port to regalloc2,
but it seems there was a bug affecting 0.36.0 (and previous versions)
where the end of a range could end up being placed before the start of
that range, triggering an assertion inValueLabelRangeBuilders::process_label
(assert_lt!(range_start, range_end);
). I think the only way this could happen was that, during construction of these value label ranges, we'd
"extend" a range with the new end of an instruction, but the end of that
instruction is located before the end of the range we're overwriting, so we'd end up incorrectly "compressing" a value range to the left! The fix is quite simple and consists in taking the maximum value of the new end offset and the previous end offset, I think.Upstreaming in case it's of interest to get a tiny dot release (or have this patch ride along other security fixes) for this in
0.36.0, otherwise I can put it on an internal fork if preferred, as this
is a real-world issue affecting our users who are trying to use debugging.
bnjbvr closed without merge PR #4107.
Last updated: Nov 22 2024 at 16:03 UTC