[release/5.0] backport card mark stealing fix to 5.0 #51718
Merged
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.
Port #51104 to Release/5.0
when we have an object that straddles the 2mb boundary for card mark stealing, we could get into a very specific situation where we process the same card twice right after the 2mb boundary and mistakenly erase it. we fix this by avoid processing the same card twice. #51104 has the detailed description of how this can happen.
Customer Impact
this causes an AV because GC would reclaim objects it shouldn't
Testing
tested locally and the customer who hit this has already tested a private 5.0 build and verified it fixed their problem.
Regression
no. this existed when we checked in the card mark stealing work in 5.0 (which means this only exists in 5.0).