Fix Memory Leak in FiberContext#await #4171
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.
Resolves #4135.
The issue is that if fiber A awaits Fiber B, A would add itself as an observer to B with a callback to be invoked when B completes. However, if A is then subsequently interrupted that callback would never be removed from B's list of observers. This could result in a memory leak in situations where effects were waiting on a fiber and then being interrupted many times. We address by adding logic so that when fiber A awaits fiber B, interruption logic is also added so that if A is interrupted the callback is also removed from B's observer list.