[release/9.0-staging] Fix PipeStream leak on Windows when pipe is disposed with a pending operation #116188
+33
−9
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.
Backport of #115453 to release/9.0-staging
/cc @stephentoub
Customer Impact
A small leak of native handles occurs when a PipeStream is disposed of while an asynchronous read or write is pending on the stream. A customer noticed this in the context of using HttpClient with pipes as the transport, such that after long periods of uptime and with connections that would idle out after long periods of time, their memory usage would slowly increase.
Regression
.NET 6
Testing
Manually validated, in addition to normal testing. Also found a couple of additional places the same pattern occurred and fix those locations.
Risk
Low. The fix is localized to disposing of a resource in a situation it wasn't being cleaned up.