microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.64k stars 28.67k forks source link

TypeError: Cannot read property 'document' of undefined #115018

Closed jrieken closed 3 years ago

jrieken commented 3 years ago

Testing #114969

This doesn't seem to happen when the explorer is the active view 🤯

Screenshot 2021-01-26 at 11 57 07
 ERR Cannot read property 'document' of undefined: TypeError: Cannot read property 'document' of undefined
    at d.get cell [as cell] (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:73:33411)
    at file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:73:32468
    at Array.map (<anonymous>)
    at asApiEvent (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:73:32459)
    at Array.map (<anonymous>)
    at m._spliceNotebookCells (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:73:39279)
    at file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:73:37940
    at Array.forEach (<anonymous>)
    at m.acceptModelChanged (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:73:37789)
    at h.$acceptModelChanged (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:77:188565)
    at f._doInvokeHandler (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:78:76443)
    at f._invokeHandler (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:78:76135)
    at f._receiveRequest (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:78:74805)
    at f._receiveOneMessage (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:78:73607)
    at file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:78:71735
    at v.fire (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:55:1836)
    at MessagePort.f.port1.onmessage (file:///Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/services/extensions/worker/extensionHostWorker.js:86:3488)
workbench.desktop.main.js:618   ERR ModelService: Cannot add model because it already exists!: Error: ModelService: Cannot add model because it already exists!
    at mi._createModelData (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:732:2892)
    at mi.createModel (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:733:959)
    at z._buildMetadataEditor (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:18617)
    at z.updateMetadataRendering (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:15068)
    at x.buildHeader (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:13057)
    at z.buildBody (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:36762)
    at new P (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:14659)
    at new z (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:35315)
    at C._createInstance (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:614:21800)
    at C.createInstance (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:614:21219)
    at Ia.renderElement (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:48968)
    at z.renderElement (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:138:1588)
    at l.insertItemInDOM (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:124:16989)
    at l._splice (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:124:12805)
    at l.splice (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:124:11171)
    at file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:3:139286
    at Array.forEach (<anonymous>)
    at t.splice (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:3:139273)
    at file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:138:7711
    at d.bufferEvents (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:55:4384)
    at o.splice (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:138:7678)
    at _a.updateLayout (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2559:10091)
    at async file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2559:6087
workbench.desktop.main.js:618   ERR Cannot read property 'domNode' of null: TypeError: Cannot read property 'domNode' of null
    at l.updateItemInDOM (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:124:17713)
    at l.render (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:124:15952)
    at l.updateElementHeight (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:124:10848)
    at o.updateElementHeight2 (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2545:49887)
    at F (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2559:11088)
    at M._runner (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:2559:11260)
    at M.execute (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:66:8267)
    at He (file:///Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:66:8481)
rebornix commented 3 years ago

@jrieken as the call stack points out, it throws in

https://github.com/microsoft/vscode/blob/b7e87c1bf2780f6b9338721369e422dcb398224d/src/vs/workbench/api/common/extHostNotebookDocument.ts#L116

and it's the web worker extension host. Any idea how is this related to extension host code? Asking as I'm not able to reproduce locally with above steps.

jrieken commented 3 years ago

That would mean that either the renderer side is wrong or, and I think that's more likely, the splice-data NotebookCellsSplice2 is bogous. Before emitting the event that causes the error we update the extHostDocument data. So, it seems that there is a content change event for which we didn't add model

jrieken commented 3 years ago

I am pushing a change that prints the cell-document error with its uri so that understanding this is simpler

jrieken commented 3 years ago

I am somewhat able to reproduce, running out of sources I still see the last two errors but not the first. One error is about failure to create a model. If that model is already removed from the extension then this error might happens. This is the latest stack trace (it seems they need a little to appear)

Updates steps: open the diff editor for the untracked plotty notebook and just wait a little

 ERR ModelService: Cannot add model because it already exists!: Error: ModelService: Cannot add model because it already exists!
    at ModelServiceImpl._createModelData (file:///Users/jrieken/Code/vscode/out/vs/editor/common/services/modelServiceImpl.js:297:23)
    at ModelServiceImpl.createModel (file:///Users/jrieken/Code/vscode/out/vs/editor/common/services/modelServiceImpl.js:365:34)
    at ModifiedElement._buildMetadataEditor (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:367:65)
    at ModifiedElement.updateMetadataRendering (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:219:26)
    at PropertyHeader.buildHeader (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:148:27)
    at ModifiedElement.buildBody (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:931:34)
    at new AbstractElementRenderer (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:207:18)
    at new ModifiedElement (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:876:13)
    at InstantiationService._createInstance (file:///Users/jrieken/Code/vscode/out/vs/platform/instantiation/common/instantiationService.js:89:20)
    at InstantiationService.createInstance (file:///Users/jrieken/Code/vscode/out/vs/platform/instantiation/common/instantiationService.js:60:31)
    at CellDiffSideBySideRenderer.renderElement (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffList.js:202:83)
    at PipelineRenderer.renderElement (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listWidget.js:750:26)
    at ListView.insertItemInDOM (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:538:26)
    at ListView._splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:344:26)
    at ListView.splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:267:29)
    at file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/splice.js:14:45
    at Array.forEach (<anonymous>)
    at CombinedSpliceable.splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/splice.js:14:30)
    at file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listWidget.js:970:67
    at EventBufferer.bufferEvents (file:///Users/jrieken/Code/vscode/out/vs/base/common/event.js:674:23)
    at NotebookTextDiffList.splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listWidget.js:970:32)
    at NotebookTextDiffEditor.updateLayout (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:346:24)
    at async file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:218:25
log.js:144   ERR Cannot read property 'domNode' of null: TypeError: Cannot read property 'domNode' of null
    at ListView.updateItemInDOM (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:568:22)
    at ListView.render (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:489:26)
    at ListView.updateElementHeight (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:255:18)
    at NotebookTextDiffList.updateElementHeight2 (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffList.js:252:23)
    at relayout (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:372:28)
    at AnimationFrameQueueItem._runner (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:380:17)
    at AnimationFrameQueueItem.execute (file:///Users/jrieken/Code/vscode/out/vs/base/browser/dom.js:147:22)
    at animationFrameRunner (file:///Users/jrieken/Code/vscode/out/vs/base/browser/dom.js:183:21)
log.js:144   ERR MISSING extHostDocument for notebook cell: vscode-notebook-cell:/Users/jrieken/Code/_samples/devfest/notebooks/plotly.txt%20copy.ipynb#ch0000001: Error: MISSING extHostDocument for notebook cell: vscode-notebook-cell:/Users/jrieken/Code/_samples/devfest/notebooks/plotly.txt%20copy.ipynb#ch0000001
    at ExtHostCell.get cell [as cell] (/Users/jrieken/Code/vscode/out/vs/workbench/api/common/extHostNotebookDocument.js:82:27)
    at /Users/jrieken/Code/vscode/out/vs/workbench/api/common/extHostNotebookDocument.js:34:67
    at Array.map (<anonymous>)
    at asApiEvent (/Users/jrieken/Code/vscode/out/vs/workbench/api/common/extHostNotebookDocument.js:34:50)
    at Array.map (<anonymous>)
    at ExtHostNotebookDocument._spliceNotebookCells (/Users/jrieken/Code/vscode/out/vs/workbench/api/common/extHostNotebookDocument.js:334:50)
    at /Users/jrieken/Code/vscode/out/vs/workbench/api/common/extHostNotebookDocument.js:275:26
    at Array.forEach (<anonymous>)
    at ExtHostNotebookDocument.acceptModelChanged (/Users/jrieken/Code/vscode/out/vs/workbench/api/common/extHostNotebookDocument.js:270:29)
    at ExtHostNotebookController.$acceptModelChanged (/Users/jrieken/Code/vscode/out/vs/workbench/api/common/extHostNotebook.js:468:26)
    at RPCProtocol._doInvokeHandler (/Users/jrieken/Code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js:341:27)
    at RPCProtocol._invokeHandler (/Users/jrieken/Code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js:326:45)
    at RPCProtocol._receiveRequest (/Users/jrieken/Code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js:253:32)
    at RPCProtocol._receiveOneMessage (/Users/jrieken/Code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js:181:26)
    at /Users/jrieken/Code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js:65:52
    at Emitter.fire (/Users/jrieken/Code/vscode/out/vs/base/common/event.js:479:38)
    at BufferedEmitter.fire (/Users/jrieken/Code/vscode/out/vs/base/parts/ipc/common/ipc.net.js:375:35)
    at /Users/jrieken/Code/vscode/out/vs/workbench/services/extensions/node/extensionHostProcessSetup.js:146:41
    at Emitter.fire (/Users/jrieken/Code/vscode/out/vs/base/common/event.js:479:38)
    at BufferedEmitter.fire (/Users/jrieken/Code/vscode/out/vs/base/parts/ipc/common/ipc.net.js:375:35)
    at PersistentProtocol._receiveMessage (/Users/jrieken/Code/vscode/out/vs/base/parts/ipc/common/ipc.net.js:654:41)
    at /Users/jrieken/Code/vscode/out/vs/base/parts/ipc/common/ipc.net.js:510:83
    at Emitter.fire (/Users/jrieken/Code/vscode/out/vs/base/common/event.js:479:38)
    at ProtocolReader.acceptChunk (/Users/jrieken/Code/vscode/out/vs/base/parts/ipc/common/ipc.net.js:189:37)
    at /Users/jrieken/Code/vscode/out/vs/base/parts/ipc/common/ipc.net.js:158:61
    at Socket.listener (/Users/jrieken/Code/vscode/out/vs/base/parts/ipc/node/ipc.net.js:17:40)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at Socket.push (_stream_readable.js:212:10)
    at Pipe.onStreamRead (internal/stream_base_commons.js:186:23)
log.js:144   ERR ModelService: Cannot add model because it already exists!: Error: ModelService: Cannot add model because it already exists!
    at ModelServiceImpl._createModelData (file:///Users/jrieken/Code/vscode/out/vs/editor/common/services/modelServiceImpl.js:297:23)
    at ModelServiceImpl.createModel (file:///Users/jrieken/Code/vscode/out/vs/editor/common/services/modelServiceImpl.js:365:34)
    at ModifiedElement._buildMetadataEditor (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:368:65)
    at ModifiedElement.updateMetadataRendering (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:219:26)
    at PropertyHeader.buildHeader (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:148:27)
    at ModifiedElement.buildBody (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:931:34)
    at new AbstractElementRenderer (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:207:18)
    at new ModifiedElement (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/diffComponents.js:876:13)
    at InstantiationService._createInstance (file:///Users/jrieken/Code/vscode/out/vs/platform/instantiation/common/instantiationService.js:89:20)
    at InstantiationService.createInstance (file:///Users/jrieken/Code/vscode/out/vs/platform/instantiation/common/instantiationService.js:60:31)
    at CellDiffSideBySideRenderer.renderElement (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffList.js:202:83)
    at PipelineRenderer.renderElement (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listWidget.js:750:26)
    at ListView.insertItemInDOM (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:538:26)
    at ListView._splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:344:26)
    at ListView.splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:267:29)
    at file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/splice.js:14:45
    at Array.forEach (<anonymous>)
    at CombinedSpliceable.splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/splice.js:14:30)
    at file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listWidget.js:970:67
    at EventBufferer.bufferEvents (file:///Users/jrieken/Code/vscode/out/vs/base/common/event.js:674:23)
    at NotebookTextDiffList.splice (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listWidget.js:970:32)
    at NotebookTextDiffEditor.updateLayout (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:346:24)
    at async file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:231:25
log.js:144   ERR Cannot read property 'domNode' of null: TypeError: Cannot read property 'domNode' of null
    at ListView.updateItemInDOM (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:568:22)
    at ListView.render (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:489:26)
    at ListView.updateElementHeight (file:///Users/jrieken/Code/vscode/out/vs/base/browser/ui/list/listView.js:255:18)
    at NotebookTextDiffList.updateElementHeight2 (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffList.js:252:23)
    at relayout (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:372:28)
    at AnimationFrameQueueItem._runner (file:///Users/jrieken/Code/vscode/out/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.js:380:17)
    at AnimationFrameQueueItem.execute (file:///Users/jrieken/Code/vscode/out/vs/base/browser/dom.js:147:22)
    at animationFrameRunner (file:///Users/jrieken/Code/vscode/out/vs/base/browser/dom.js:183:21)
jrieken commented 3 years ago

notebook and just wait a little

More insights: this is waiting for some file seems to be fired (unsure when/how) and that causes things to go south. The event is fired from the GIT-file system

Screenshot 2021-01-26 at 19 02 03