prev
should be set to null when setting cursor
to head
in scavengeSome
#6180
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.
Set
prev
to null when settingcursor
tohead
inscavengeSome
to fix #6153.Motivation:
scavengeSome()
has a corner case: when settingcursor
tohead
,this.prev
may point to the tail of theWeakOrderQueue
linked list. Then it's possible that the following while loop will link the tail to the head, and cause endless loop.I made a reproducer in zsxwing@36522e7 . The unit test will just run forever. Unfortunately, I cannot change it to a unit test because it needs to add some codes to
scavengeSome
to control the execution flow.Modification:
Set
prev
to null when settingcursor
tohead
inscavengeSome
.Result:
Fixes #6153.