Don't mutate the hashtable with forward edges during final iteration. #46375
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.
By looking up keys using
ptrhash_bp
, we possibly grow the hash table, invalidating the iteration we were doing injl_collect_backedges
. First perform a non-mutating check instead, and assert that the hashtable doesn't change during iteration.It's possible there's other cases of the map being mutated, so this may not be sufficient, but hopefully the added assertion will help us detect this issue (which only occurred when a failed lookup caused the hash table to grow, which is unlikely).
Hopefully fixes #45444. I'm not sure how far to backport this; If my understanding of this bug is correct it's been lurking since forever, while we've only been seeing this on PkgEval for a couple of months...