Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

memory leak in extensionList #198977

Closed
SimonSiefke opened this issue Nov 23, 2023 · 0 comments · Fixed by #199014
Closed

memory leak in extensionList #198977

SimonSiefke opened this issue Nov 23, 2023 · 0 comments · Fixed by #199014
Assignees
Labels
insiders-released Patch has been released in VS Code Insiders
Milestone

Comments

@SimonSiefke
Copy link
Contributor

SimonSiefke commented Nov 23, 2023

Does this issue occur when all extensions are disabled?: Yes/No

  • VS Code Version: 1.84.2
  • OS Version: Ubuntu 23.04

Steps to Reproduce:

Setup

  1. In VSCode, open the extensions view
  2. Search for @builtin html
  3. Click on HTML Language Basics
  4. Close all editors
  5. Repeat steps 3 and 4 several times
  6. Notice auxclick and keydown event listeners have been added but not been removed
{
  "eventListenersWithStackTrace": [
    {
      "type": "auxclick",
      "description": "(e) => this.emitter.fire(e)",
      "objectId": "-4969416604808149280.4.16359",
      "stack": [
        "listener (vscode/out/vs/base/browser/event.js:13:23)",
        "Object.onWillAddFirstListener (vscode/out/vs/base/browser/event.js:16:55)",
        "_event (vscode/out/vs/base/common/event.js:810:60)",
        "vscode/out/vs/base/common/event.js:129:95",
        "Array.map (<anonymous>)",
        "vscode/out/vs/base/common/event.js:129:82",
        "renderMarkdown (vscode/out/vs/base/browser/markdownRenderer.js:158:101)",
        "ExtensionStatusWidget.render (vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js:629:99)",
        "UniqueContainer.value (vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js:618:79)",
        "Emitter._deliver (vscode/out/vs/base/common/event.js:882:26)",
        "Emitter.fire (vscode/out/vs/base/common/event.js:911:22)",
        "ExtensionStatusAction.updateStatus (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:2190:37)",
        "ExtensionStatusAction.computeAndUpdateStatus (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:2146:26)",
        "vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:1966:51",
        "Throttler.queue (vscode/out/vs/base/common/async.js:172:34)",
        "ExtensionStatusAction.update (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:1966:34)",
        "set extension [as extension] (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:151:70)",
        "vscode/out/vs/workbench/contrib/extensions/common/extensions.js:47:54",
        "Array.forEach (<anonymous>)",
        "set extension [as extension] (vscode/out/vs/workbench/contrib/extensions/common/extensions.js:47:29)",
        "set extension [as extension] (vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js:281:51)",
        "ExtensionEditor.render (vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js:352:32)",
        "async ExtensionEditor.setInput (vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js:296:17)",
        "async EditorPanes.doSetInput (vscode/out/vs/workbench/browser/parts/editor/editorPanes.js:313:17)",
        "async EditorPanes.doOpenEditor (vscode/out/vs/workbench/browser/parts/editor/editorPanes.js:180:44)",
        "async EditorPanes.openEditor (vscode/out/vs/workbench/browser/parts/editor/editorPanes.js:78:28)",
        "async vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js:837:65",
        "async ExtensionsWorkbenchService.open (vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js:898:28)"
      ],
      "count": 56,
      "originalStack": ["vscode/src/vs/base/browser/event.ts:40:14"],
      "originalName": null
    },
    {
      "type": "keydown",
      "description": "(e) => {\n                const keyboardEvent = new keyboardEvent_1.StandardKeyboardEvent(e);\n                if (!keyboardEvent.equals(10 /* KeyCode.Space */) && !keyboardEvent.equals(3 /* KeyCode.Enter */)) {\n                    return;\n                }\n                _activateLink(keyboardEvent);\n            }",
      "objectId": "-4969416604808149280.4.16361",
      "stack": [
        "listener (vscode/out/vs/base/browser/markdownRenderer.js:164:96)",
        "new DomListener (vscode/out/vs/base/browser/dom.js:64:24)",
        "Object.addDisposableListener (vscode/out/vs/base/browser/dom.js:78:16)",
        "renderMarkdown (vscode/out/vs/base/browser/markdownRenderer.js:165:55)",
        "ExtensionStatusWidget.render (vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js:629:99)",
        "UniqueContainer.value (vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js:618:79)",
        "Emitter._deliver (vscode/out/vs/base/common/event.js:882:26)",
        "Emitter.fire (vscode/out/vs/base/common/event.js:911:22)",
        "ExtensionStatusAction.updateStatus (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:2190:37)",
        "ExtensionStatusAction.computeAndUpdateStatus (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:2146:26)",
        "vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:1966:51",
        "Throttler.queue (vscode/out/vs/base/common/async.js:172:34)",
        "ExtensionStatusAction.update (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:1966:34)",
        "set extension [as extension] (vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js:151:70)",
        "vscode/out/vs/workbench/contrib/extensions/common/extensions.js:47:54",
        "Array.forEach (<anonymous>)",
        "set extension [as extension] (vscode/out/vs/workbench/contrib/extensions/common/extensions.js:47:29)",
        "set extension [as extension] (vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js:281:51)",
        "ExtensionEditor.render (vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js:352:32)",
        "async ExtensionEditor.setInput (vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js:296:17)",
        "async EditorPanes.doSetInput (vscode/out/vs/workbench/browser/parts/editor/editorPanes.js:313:17)",
        "async EditorPanes.doOpenEditor (vscode/out/vs/workbench/browser/parts/editor/editorPanes.js:180:44)",
        "async EditorPanes.openEditor (vscode/out/vs/workbench/browser/parts/editor/editorPanes.js:78:28)",
        "async vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js:837:65",
        "async ExtensionsWorkbenchService.open (vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js:898:28)"
      ],
      "count": 7,
      "originalStack": ["vscode/src/vs/base/browser/markdownRenderer.ts:204:87"],
      "originalName": null
    }
  ],
  "isLeak": true
}

Test Script

git clone git@github.com:SimonSiefke/vscode-memory-leak-finder.git &&
cd vscode-memory-leak-finder &&
git checkout v5.26.1 &&
npm ci &&
node packages/cli/bin/test.js --cwd packages/e2e  --check-leaks --measure-after --measure event-listeners-with-stack-traces --runs 7  --only extension.detail &&
cat .vscode-memory-leak-finder-results/event-listeners-with-stack-traces/extension.detail-view-open.json
sandy081 added a commit that referenced this issue Nov 24, 2023
@sandy081 sandy081 added this to the November 2023 milestone Nov 24, 2023
@vscodenpa vscodenpa added the unreleased Patch has not yet been released in VS Code Insiders label Nov 24, 2023
pull bot pushed a commit to michelkk96/vscode that referenced this issue Nov 24, 2023
@SimonSiefke SimonSiefke changed the title memory leaks in extensionList and simpleFindWidget memory leaks in extensionList Nov 24, 2023
@SimonSiefke SimonSiefke changed the title memory leaks in extensionList memory leak in extensionList Nov 24, 2023
@vscodenpa vscodenpa added insiders-released Patch has been released in VS Code Insiders and removed unreleased Patch has not yet been released in VS Code Insiders labels Nov 24, 2023
@github-actions github-actions bot locked and limited conversation to collaborators Jan 8, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
insiders-released Patch has been released in VS Code Insiders
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants