DebugAllocator: Fix bucket removal logic causing segfault/leak #23390
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.
Hey Ziguanas 0/
Ran into this one while at work and it drove me crazy for a good couple hours until a coworker and I realized it was a bug in the DebugAllocator rather than in our own code!
Here's a repro; the first test will not error when it should, and the second will segfault:
My proposed patch is strictly less performant (though not significantly unless you're freeing rather old buckets on a specific size class on the regular I'd imagine) and could be made inexpensive by making the buckets doubly-linked list, though that of course has its own space tradeoffs.
Let me know if you'd like to go the doubly-linked route instead (or something else entirely). Cheers! :)