Last Comment Bug 678938 - "ABORT: Shouldn't have current interval in startup or postactive states"
: "ABORT: Shouldn't have current interval in startup or postactive states"
: assertion, testcase
Product: Core
Classification: Components
Component: SVG (show other bugs)
: Trunk
: All All
: -- normal (vote)
: mozilla9
Assigned To: Brian Birtles (:birtles)
: Jet Villegas (:jet)
Depends on:
Blocks: 326633
  Show dependency treegraph
Reported: 2011-08-14 23:08 PDT by Jesse Ruderman
Modified: 2011-09-05 18:13 PDT (History)
3 users (show)
bbirtles: in‑testsuite+
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---

testcase (asserts fatally when loaded) (273 bytes, image/svg+xml)
2011-08-14 23:08 PDT, Jesse Ruderman
no flags Details
stack trace (2.46 KB, text/plain)
2011-08-14 23:09 PDT, Jesse Ruderman
no flags Details
Patch v1a (3.35 KB, patch)
2011-08-30 19:00 PDT, Brian Birtles (:birtles)
dholbert: review+
Details | Diff | Splinter Review

Description Jesse Ruderman 2011-08-14 23:08:50 PDT
Created attachment 553115 [details]
testcase (asserts fatally when loaded)

###!!! ABORT: Shouldn't have current interval in startup or postactive states: '!mCurrentInterval', file content/smil/nsSMILTimedElement.cpp, line 576
Comment 1 Jesse Ruderman 2011-08-14 23:09:13 PDT
Created attachment 553116 [details]
stack trace
Comment 2 Jesse Ruderman 2011-08-14 23:13:53 PDT
Harmless in opt
Comment 3 Brian Birtles (:birtles) 2011-08-30 19:00:20 PDT
Created attachment 557068 [details] [diff] [review]
Patch v1a

Proposed patch with testcase

The problem is we were calling Rewind -> ClearIntervals -> ResetCurrentInterval

Inside ResetCurrentInterval, when we unlink the current interval, we can get callbacks that actually set the current interval again, right after we cleared it. That is, there is no guarantee that at the end of a call to ResetCurrentInterval, mCurrentInterval will be nsnull, just that the previously-current interval (if any) will have been cleared. Likewise for ClearIntervals.

However, Rewind was assuming that mCurrentInterval would be nsnull. That was probably valid a while back since when we were setting mElementState to STATE_STARTUP in advance since so long as we're in the startup state we won't bother updating the current interval and mCurrentInterval will stay nsnull. However, when we refactored out ClearIntervals we made it change the state to STATE_POSTACTIVE which meant that assumption no longer held.

For now, I've made it set the state to STATE_STARTUP before clearing the intervals so we'll ignore any attempts to update the current interval from that point on.
Comment 4 Brian Birtles (:birtles) 2011-08-30 19:02:47 PDT
By the way, I reshuffled a couple of lines in content/smil/crashtests/crashtests.list because the numbering got out of sequence somehow. I just thought I'd fix it while I was already touching that file.
Comment 5 Brian Birtles (:birtles) 2011-09-01 16:18:41 PDT
Pushed to m-i:

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