Closed
Bug 738555
Opened 13 years ago
Closed 13 years ago
"ASSERTION: Must not call under nsISVGChildFrame::UpdateBounds!"
Categories
(Core :: SVG, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 779971
People
(Reporter: jruderman, Unassigned)
References
Details
(Keywords: assertion, testcase)
Attachments
(2 files)
###!!! ASSERTION: Must not call under nsISVGChildFrame::UpdateBounds!: '!OuterSVGIsCallingUpdateBounds(aFrame)', file layout/svg/base/src/nsSVGUtils.cpp, line 820
###!!! ASSERTION: aDuringUpdate lies!: 'aDuringUpdate == OuterSVGIsCallingUpdateBounds(aFrame)', file layout/svg/base/src/nsSVGUtils.cpp, line 671
###!!! ASSERTION: Must not InvalidateRenderingObservers() under nsISVGChildFrame::UpdateBounds!: '!OuterSVGIsCallingUpdateBounds(aFrame)', file layout/svg/base/src/nsSVGUtils.cpp, line 683
###!!! ASSERTION: Do not call under nsISVGChildFrame::UpdateBounds!: '!OuterSVGIsCallingUpdateBounds(aFrame)', file layout/svg/base/src/nsSVGUtils.cpp, line 749
| Reporter | ||
Comment 1•13 years ago
|
||
Comment 2•13 years ago
|
||
Hmm, the stack traces in the attachment are a bit busted. A more accurate stack is:
nsSVGUtils::InvalidateBounds <- second and third assertions
nsSVGUtils::InvalidateAndScheduleBoundsUpdate <- first assertion
nsSVGTextFrame::NotifyGlyphMetricsChange
nsSVGTextContainerFrame::NotifyGlyphMetricsChange
nsSVGTextPathProperty::DoUpdate
nsSVGRenderingObserver::InvalidateViaReferencedElement
nsSVGRenderingObserverList::InvalidateAll
nsSVGEffects::InvalidateDirectRenderingObservers
nsSVGEffects::InvalidateDirectRenderingObservers
nsIFrame::InvalidateInternal
nsIFrame::InvalidateWithFlags
nsIFrame::Invalidate
nsSVGUtils::InvalidateBounds
nsSVGGlyphFrame::UpdateBounds
nsSVGDisplayContainerFrame::UpdateBounds
nsSVGTextFrame::UpdateBounds
nsSVGOuterSVGFrame::DidReflow
The fourth assertion is in nsSVGUtils::ScheduleBoundsUpdate, which is called by nsSVGUtils::InvalidateAndScheduleBoundsUpdate when nsSVGUtils::InvalidateBounds returns.
The problem is that nsIFrame::InvalidateInternal calls nsSVGEffects::InvalidateDirectRenderingObservers, but nsIFrame::InvalidateInternal can be called during reflow, which is a bad time to be trying to invalidate observers since we want to be able to mark frames as dirty and call FrameNeedsReflow under nsSVGUtils::InvalidateBounds.
One way to prevent this would be to have an nsSVGOuterSVGFrame::InvalidateInternal override that checks the state of its mCallingUpdateBounds member, but that's probably not the best way for various reasons.
Comment 3•13 years ago
|
||
bug 539356 fixed this. It would be great if the testcase could land as a crashtest though as that bug didn't have any tests that test this case.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Comment 4•13 years ago
|
||
Apologies comment 3 is for a different bug.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Updated•13 years ago
|
Status: REOPENED → NEW
Comment 5•13 years ago
|
||
This is bug 779971. The function name changed which is why there are two bugs.
Status: NEW → RESOLVED
Closed: 13 years ago → 13 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•