Visitar URL original
fix: memory leak in custom document disposal by SimonSiefke · Pull Request #338250 · microsoft/vscode · GitHub
Skip to content

fix: memory leak in custom document disposal - #338250

Merged
Dmitriy Vasyura (dmitrivMS) merged 3 commits into
microsoft:mainfrom
SimonSiefke:fix/memory-leak-customDocument-providerDisposal
Sep 28, 2026
Merged

Dmitriy Vasyura (dmitrivMS) merged 3 commits into
microsoft:mainfrom
SimonSiefke:fix/memory-leak-customDocument-providerDisposal

Conversation

@SimonSiefke

Copy link
Copy Markdown
Contributor

Details

Unregistering a custom-editor provider removes it before the main thread asks the extension host to dispose its documents. Document cleanup then rejects because the provider is missing, leaving the documents in the extension-host document map.

Change

Dispose the existing document by its view type and resource without requiring its provider to remain registered. Keep deletion before the document's disposal callback and preserve the existing resource-key behavior.

Before

Opening a custom document, unregistering its provider, and closing the editor 37 times adds 37 documents, document-store entries, and caches.

before

After

No more custom-document or matching cache growth is detected in the same 37-cycle test. The document map stays empty after cleanup.

Test Video

Seven custom-editor provider disposal cycles. A short pause in this recording lets the editor content paint; the memory measurements use the same unmodified scenario on both builds.

test.mp4

AI disclosure: Model: GPT 6 Astra. Worktime: 20 min

Copilot AI balanced review requested due to automatic review settings September 27, 2026 19:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The focused lifecycle fix is correct and comprehensively covered by regression tests.

Review effort: Balanced
Findings: None

What changed in this PR

Fixes custom-editor document leaks when providers are unregistered before document cleanup.

Changes:

  • Disposes documents without requiring a registered provider.
  • Adds lifecycle, replacement-provider, URI-change, and failure tests.
File Description
extHostCustomEditors.ts Removes the stale provider dependency during disposal.
extHostCustomEditors.test.ts Adds regression coverage for document cleanup.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@dmitrivMS Dmitriy Vasyura (dmitrivMS) added the custom-editors Custom editor API (webview based editors) label Sep 28, 2026
@dmitrivMS

Copy link
Copy Markdown
Collaborator

Simon Siefke (@SimonSiefke) Thank you!

@dmitrivMS
Dmitriy Vasyura (dmitrivMS) merged commit 80a9a6b into microsoft:main Sep 28, 2026
35 checks passed
@vs-code-engineering vs-code-engineering Bot added this to the 1.141.0 milestone Sep 28, 2026
@SimonSiefke
Simon Siefke (SimonSiefke) deleted the fix/memory-leak-customDocument-providerDisposal branch September 29, 2026 11:15
Abdon Morales (abdonmorales) pushed a commit to abdonmorales/vscode-utcs that referenced this pull request Oct 1, 2026
fix: release custom documents after provider unregistration

Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
(cherry picked from commit 80a9a6b)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

custom-editors Custom editor API (webview based editors) freeze-slow-crash-leak VS Code crashing, performance, freeze and memory leak issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants