Skip to content

potential listener LEAK detected, having 175  #112267

@bpasero

Description

@bpasero

I debugged a hello world extension out of sources and clicked the "Stop" button when I saw this:

event.js:344 [5ca] potential listener LEAK detected, having 175 listeners already. MOST frequent listener (1):
check @ event.js:344
_event @ event.js:406
onFirstListenerAdd @ event.js:108
_event @ event.js:394
Menu @ menuService.js:47
createMenu @ menuService.js:24
SubmenuItemAction @ actions.js:228
getActions @ menuService.js:94
populateMenuItems @ window.js:568
getMenubarMenus @ window.js:558
doUpdateMenubar @ window.js:545
(anonymous) @ menubarControl.js:62
doRun @ async.js:599
onTimeout @ async.js:594
setTimeout (async)
schedule @ async.js:577
updateMenubar @ menubarControl.js:80
(anonymous) @ window.js:528
fire @ event.js:456
(anonymous) @ menuService.js:47
fire @ event.js:459
(anonymous) @ event.js:121
setTimeout (async)
(anonymous) @ event.js:116
fire @ event.js:456
resume @ event.js:500
bufferChangeEvents @ contextKeyService.js:231
onDidChangeActiveViews @ viewDescriptorService.js:536
(anonymous) @ viewDescriptorService.js:510
fire @ event.js:459
onDidChangeContext @ viewContainerModel.js:496
(anonymous) @ viewContainerModel.js:242
fire @ event.js:456
(anonymous) @ event.js:56
fire @ event.js:456
resume @ event.js:500
bufferChangeEvents @ contextKeyService.js:231
setFocus @ debugViewModel.js:48
(anonymous) @ debugService.js:489
fire @ event.js:456
onDidExitAdapter @ debugSession.js:865
(anonymous) @ debugSession.js:859
fire @ event.js:456
fireAdapterExitEvent @ rawDebugSession.js:440
stopAdapter @ rawDebugSession.js:427
async function (async)
stopAdapter @ rawDebugSession.js:422
shutdown @ rawDebugSession.js:409
async function (async)
shutdown @ rawDebugSession.js:403
disconnect @ rawDebugSession.js:204
(anonymous) @ debugSession.js:720
fire @ event.js:456
(anonymous) @ rawDebugSession.js:95
processQueue @ abstractDebugAdapter.js:135
async function (async)
processQueue @ abstractDebugAdapter.js:126
acceptMessage @ abstractDebugAdapter.js:93
$acceptDAMessage @ mainThreadDebugService.js:247
_doInvokeHandler @ rpcProtocol.js:341
_invokeHandler @ rpcProtocol.js:326
_receiveRequest @ rpcProtocol.js:253
_receiveOneMessage @ rpcProtocol.js:181
(anonymous) @ rpcProtocol.js:65
fire @ event.js:456
fire @ ipc.net.js:375
_receiveMessage @ ipc.net.js:651
(anonymous) @ ipc.net.js:510
fire @ event.js:456
acceptChunk @ ipc.net.js:189
(anonymous) @ ipc.net.js:158
listener @ ipc.net.js:17
emit @ events.js:315
addChunk @ _stream_readable.js:295
readableAddChunk @ _stream_readable.js:271
Readable.push @ _stream_readable.js:212
onStreamRead @ internal/stream_base_commons.js:186
event.js:345     at Object.onFirstListenerAdd (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/base/common/event.js:108:36)
    at _event (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/base/common/event.js:394:39)
    at new Menu (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/platform/actions/common/menuService.js:47:167)
    at MenuService.createMenu (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/platform/actions/common/menuService.js:24:20)
    at new SubmenuItemAction (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/platform/actions/common/actions.js:228:58)
    at Menu.getActions (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/platform/actions/common/menuService.js:94:31)
    at NativeMenubarControl.populateMenuItems (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/workbench/electron-sandbox/window.js:568:31)
    at NativeMenubarControl.getMenubarMenus (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/workbench/electron-sandbox/window.js:558:26)
    at NativeMenubarControl.doUpdateMenubar (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/workbench/electron-sandbox/window.js:545:22)
    at RunOnceScheduler.runner (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/workbench/browser/parts/titlebar/menubarControl.js:62:87)
    at RunOnceScheduler.doRun (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/base/common/async.js:599:22)
    at RunOnceScheduler.onTimeout (file:///Users/bpasero/Development/Microsoft/monaco/out/vs/base/common/async.js:594:22)

Steps to Repro:

  1. Open VS Code
  2. Open Extensions View
  3. Open Explorer View
  4. Repeat Step 2 and 3 multiple times (at least 6)

🐛 Above event leak warning is shown

Metadata

Metadata

Labels

bugIssue identified by VS Code Team member as probable bugfreeze-slow-crash-leakVS Code crashing, performance, freeze and memory leak issuesinsiders-releasedPatch has been released in VS Code InsidersmenusMenu items and widget issuesverifiedVerification succeeded

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions