[release/6.0] Fix memory leak in enqueue/dequeue of EventPipe callback data. #58244
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 #58170 to release/6.0
/cc @lateralusX
Customer Impact
Small memory leak on each EventSource EventPipe provider enable/disable callback invocation introduced by #56104. Leak size is size of callback filter_data on enable and disable. Filter data is not used in all scenarios and for cases where filter data is not used nothing will be leaked. NOTE, memory leak affects both CoreCLR as well as Mono.
Testing
We have native EventPipe tests that can be run with automatic memory leak detection in debug build. It is currently not automated, so needs to be run manually (that's how this memory leak was found), https://github.com/dotnet/runtime/tree/main/src/mono/mono/eventpipe/test.
Risk
Low. Since the leak is small it can be discussed if we should leave it as is. Filter data can however be passed over our diagnostic IPC protocol when starting a session, so it is possible to trigger this memory leak over IPC.