fix: memory leak main thread terminal service #286236
Open
+17
−33
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.
Fixes a memory leak in
mainThreadTerminalService.Details
Registering a terminal completion provider happens through this code:
When a completion provider with the same id gets registered again, instead of replacing the completion provider, another one gets created. And the previous
completionProviders[id]Disposablekind of gets unreferenced.Fix
The fix uses a
DisposableMapso that at most one completion provider gets registered with the same id. When another completion provider with the same id gets registered, the previous registration will be disposed.Before
When debugging a python file 37 times, the number of
TerminalCompletionService.registerTerminalCompletionProviderfunctions seems to grow by one each time:After
When debugging a python file 37 times, while the number of some functions still seems to grow, the number of
TerminalCompletionService.registerTerminalCompletionProviderfunctions now stays constant: