$anchor[0].parentNode is sometimes null in ve.ce.BranchNode.prototype.onSplice resulting in an error in Microsoft Internet Explorer
Open, LowPublic

Description

Happens on:

parentNode.insertBefore(args[i].$element[j], afterAnchor);

Error is "Unable to get property 'insertBefore' of undefined or null reference"
Call stack for this is:

ve.ce.BranchNode.prototype.onSplice [Line: 9324, Col: 25], load.php
oo.EventEmitter.prototype.emit [Line: 18274, Col: 31], load.php
ve.dm.BranchNode.prototype.splice [Line: 3876, Col: 9], load.php
Anonymous function [Line: 1551, Col: 21], load.php
ve.dm.Document.prototype.rebuildNodes [Line: 6568, Col: 9], load.php
ve.dm.DocumentSynchronizer.synchronizers.rebuild [Line: 6840, Col: 9], load.php
ve.dm.DocumentSynchronizer.prototype.synchronize [Line: 6873, Col: 17], load.php
ve.dm.TransactionProcessor.prototype.process [Line: 4456, Col: 9], load.php
ve.dm.Document.prototype.commit [Line: 6313, Col: 9], load.php
ve.dm.Surface.prototype.changeInternal [Line: 5570, Col: 21], load.php
ve.dm.Surface.prototype.change [Line: 5541, Col: 9], load.php
ve.ce.Surface.prototype.changeModel [Line: 11255, Col: 13], load.php
ve.ce.Surface.prototype.onContentChange [Line: 10791, Col: 21], load.php
oo.EventEmitter.prototype.emit [Line: 18274, Col: 31], load.php
ve.ce.SurfaceObserver.prototype.pollOnceInternal [Line: 11377, Col: 25], load.php
ve.ce.SurfaceObserver.prototype.pollOnce [Line: 11309, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11295, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
ve.ce.SurfaceObserver.prototype.startTimerLoop [Line: 11287, Col: 9], load.php
ve.ce.Surface.prototype.onDocumentKeyDown [Line: 10406, Col: 9], load.php
proxy [Line: 260, Col: 17], load.php
ve.EventSequencer.prototype.callListener [Line: 2690, Col: 9], load.php
ve.EventSequencer.prototype.onEvent [Line: 2609, Col: 13], load.php
Anonymous function [Line: 2526, Col: 17], load.php
jQuery.event.dispatch [Line: 2383, Col: 25], load.php
elemData.handle [Line: 2202, Col: 21], load.php

MarkAHershberger updated the task description. (Show Details)
MarkAHershberger raised the priority of this task from to Needs Triage.
MarkAHershberger updated the task description. (Show Details)
MarkAHershberger set Security to None.
MarkAHershberger added a subscriber: MarkAHershberger.

Similar exception generated in ve.dm.Document.prototype.fixupInsertion when trying to insert at the end of the page:

Inserted data is trying to close the root node (at index 0)

backtrace:
writeElement [Line: 6591, Col: 29], load.php
ve.dm.Document.prototype.fixupInsertion [Line: 6694, Col: 17], load.php
ve.dm.Transaction.prototype.pushInsertion [Line: 5205, Col: 9], load.php
ve.dm.Transaction.newFromInsertion [Line: 4653, Col: 43], load.php
ve.ce.Surface.prototype.handleEnter [Line: 11030, Col: 17], load.php
ve.ce.Surface.prototype.onDocumentKeyDown [Line: 10374, Col: 21], load.php
proxy [Line: 260, Col: 17], load.php
ve.EventSequencer.prototype.callListener [Line: 2690, Col: 9], load.php
ve.EventSequencer.prototype.onEvent [Line: 2609, Col: 13], load.php
Anonymous function [Line: 2526, Col: 17], load.php
jQuery.event.dispatch [Line: 2383, Col: 25], load.php
elemData.handle [Line: 2202, Col: 21], load.php

Another from ve.ce.Document.prototype.getNodeAndOffset:

Offset could not be translated to a DOM element and offset: 82

backtrace:
ve.ce.Document.prototype.getNodeAndOffset [Line: 9133, Col: 9], load.php
ve.ce.Surface.prototype.getRangeSelection [Line: 11133, Col: 13], load.php
ve.ce.Surface.prototype.showSelection [Line: 11109, Col: 23], load.php
ve.ce.Surface.prototype.onModelSelect [Line: 10698, Col: 13], load.php
oo.EventEmitter.prototype.emit [Line: 18274, Col: 31], load.php
ve.dm.Surface.prototype.setSelection [Line: 5530, Col: 13], load.php
ve.dm.Surface.prototype.changeInternal [Line: 5580, Col: 13], load.php
ve.dm.Surface.prototype.change [Line: 5541, Col: 9], load.php
ve.ce.Surface.prototype.changeModel [Line: 11255, Col: 13], load.php
ve.ce.Surface.prototype.onContentChange [Line: 10816, Col: 9], load.php
oo.EventEmitter.prototype.emit [Line: 18274, Col: 31], load.php
ve.ce.SurfaceObserver.prototype.pollOnceInternal [Line: 11377, Col: 25], load.php
ve.ce.SurfaceObserver.prototype.pollOnce [Line: 11309, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11295, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.SurfaceObserver.prototype.setTimeout [Line: 11392, Col: 9], load.php
ve.ce.SurfaceObserver.prototype.timerLoop [Line: 11298, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php

W00! they keep coming!

from ve.ce.Surface.prototype.handleUpOrDownArrowKey:

Unable to get property 'isFocusable' of undefined or null reference

backtrace:
Anonymous function [Line: 10905, Col: 13], load.php
proxy [Line: 260, Col: 17], load.php
ve.ce.Surface.prototype.handleUpOrDownArrowKey [Line: 10902, Col: 9], load.php
ve.ce.Surface.prototype.onDocumentKeyDown [Line: 10364, Col: 21], load.php
proxy [Line: 260, Col: 17], load.php
ve.EventSequencer.prototype.callListener [Line: 2690, Col: 9], load.php
ve.EventSequencer.prototype.onEvent [Line: 2609, Col: 13], load.php
Anonymous function [Line: 2526, Col: 17], load.php
jQuery.event.dispatch [Line: 2383, Col: 25], load.php
elemData.handle [Line: 2202, Col: 21], load.php

Another from ve.ce.Document.prototype.getNodeAndOffset:

Offset could not be translated to a DOM element and offset: 82

backtrace:
ve.ce.Document.prototype.getNodeAndOffset [Line: 9133, Col: 9], load.php

Duplicated after restarting IE and editing at the end of the page.

Duplicated after restarting IE and editing at the end of the page.

Seems to be caused by using down error key to hit the end of the document.

Jdforrester-WMF triaged this task as Low priority.
Jdforrester-WMF moved this task from To Triage to Backlog on the VisualEditor board.