Frame Allocator can create duplicate free regions during initialization #1105
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current code catches the mistake and reports an error. The duplicate region is created due to a bug in the
check_and_add_free_region
function. After returning from a recursive call, the original area's end frame should be updated to not include the region that was just added to the free list.I believe there is an unspoken assumption that the list of reserved regions will be in ascending order, but that is not always the case.
In the screenshots below, the original code adds the region 0x2098000..=0x1FFDE000 twice.