Last Comment Bug 771639 - "Assertion failure: node" in ValidateCurrentNode
: "Assertion failure: node" in ValidateCurrentNode
: assertion, regression, testcase
Product: Core
Classification: Components
Component: DOM: Core & HTML (show other bugs)
: Trunk
: All All
-- critical (vote)
: mozilla16
Assigned To: Aryeh Gregor (:ayg) (next working March 28-April 26)
: Andrew Overholt [:overholt]
Depends on:
Blocks: 336383 766426
  Show dependency treegraph
Reported: 2012-07-06 13:25 PDT by Jesse Ruderman
Modified: 2013-04-04 13:53 PDT (History)
2 users (show)
ayg: in‑testsuite+
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---

testcase (575 bytes, text/html)
2012-07-06 13:25 PDT, Jesse Ruderman
no flags Details
stack trace (5.31 KB, text/plain)
2012-07-06 13:26 PDT, Jesse Ruderman
no flags Details
Patch (2.24 KB, patch)
2012-07-08 05:00 PDT, Aryeh Gregor (:ayg) (next working March 28-April 26)
bugs: review+
Details | Diff | Splinter Review

Description User image Jesse Ruderman 2012-07-06 13:25:22 PDT
Created attachment 639769 [details]

Assertion failure: node, at content/base/src/nsRange.cpp:1457

This assertion is part of ValidateCurrentNode, a function added in bug 766426.
Comment 1 User image Jesse Ruderman 2012-07-06 13:26:00 PDT
Created attachment 639770 [details]
stack trace
Comment 2 User image Aryeh Gregor (:ayg) (next working March 28-April 26) 2012-07-08 05:00:30 PDT
Created attachment 640054 [details] [diff] [review]

This turns out not to have anything to do with fullscreen.  What CutContents does in this case is:

1) Create an iterator and call Last()

2) Save the current node in a local variable

3) Call Prev() on iterator so that if we delete the local variable, the iterator points to the next node we should delete

4) Delete the node

5) Call ValidateCurrentNode() on the iterator

The problem is that if any mutation occurs in step (4), and the node we just removed is the last one, the iterator will be done.  Then ValidateCurrentNode() will try to get the current node, which will be null.  Then it will assert.  In this case, we should just say it's valid.

Comment 3 User image Aryeh Gregor (:ayg) (next working March 28-April 26) 2012-07-09 02:24:45 PDT
Comment 4 User image Ryan VanderMeulen [:RyanVM] 2012-07-09 18:05:22 PDT

Note You need to log in before you can comment on or make changes to this bug.