Memory Leak: BufferWriter Array Return Failure #76
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.
Found a bug where the
SequenceSegment<T>.Memory
was being set todefault
prior to theRefCountedSegment.ReleaseImpl()
method invocation. This has the effect of the implementation attempting to return defaultMemory<byte>.Empty
array which is discarded by the pool. The GC obviously picks this up in the end, but it prevents the pool from reusing the memory.The fix for this is changing the order of the setting of the memory to default and the
ReleaseImpl
invocation.Added a test for this fix. I encountered one failure of
BufferWriterTests.BufferWriterDoesNotLeak()
but I could not reproduce the onetime failure. Unless I'm missing something, I don't see how this modification would cause the test failure.