Open Bug 448040 Opened 16 years ago Updated 2 years ago

"###!!! ASSERTION: cannot call GetUsedBorder on a dirty frame not currently being reflowed" every time I Ctrl-Tab

Categories

(Core :: Layout, defect)

defect

Tracking

()

REOPENED

People

(Reporter: dholbert, Unassigned)

References

Details

(Keywords: assertion, regression)

Steps to reproduce:
 1. Fire up a recent mozilla-central debug build
 2. Open 3 (or mroe) tabs
 3. Press Ctrl-Tab

RESULTS:
###!!! ASSERTION: cannot call GetUsedBorder on a dirty frame not currently being reflowed: 'nsLayoutUtils::sDisableGetUsedXAssertions || !NS_SUBTREE_DIRTY(this) || (GetStateBits() & NS_FRAME_IN_REFLOW)', file /layout/generic/nsFrame.cpp, line 570

I get no assertions if I...
 -- switch tabs by simply clicking a tab
 -- Ctrl-Tab with just 2 tabs open (doesn't use new ctrl-tab switcher)
See also bug 419289, which was filed on this assertion happening in other circumstances in the past.
Doesn't happen on OS X. Perhaps a Linux only issue?
Daniel, sorry but this should be a dupe of bug 419289. It shouldn't matter which steps are used to trigger it. We have the same source file.
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → DUPLICATE
> It shouldn't matter which steps are used to trigger it.

Probably not, but to be a duplicate you need to have the same stack (at least on top), not just the same assertion.  There are many, many reasons this assertion could fire: any time someone calls GetUsedBorder() at a bad time.  The question is who the someone is.  Different someones == different bugs.  At least if things are working as they should.
I think we should reopen this and reevaluate (with stack!) after bug 459089 is fixed.
Status: RESOLVED → REOPENED
Depends on: 459089
Resolution: DUPLICATE → ---
Also appears on OS X.
OS: Linux → All
Hardware: PC → All
No longer depends on: 459089
I meant bug 459086.
Depends on: 459086
Daniel, can you still see the assertion? If not we can re-dupe to bug 419289.
I just updated my tree, and I do still see the assertion.  So, this was not fixed by bug 459086.
Indeed.  Relevant stack:

#5  0x030ced9b in nsIFrame::GetUsedBorder (this=0x152d908) at /Users/bzbarsky/mozilla/debug/mozilla/layout/generic/nsFrame.cpp:604
#6  0x030cf237 in nsIFrame::GetPaddingRect (this=0x152d908) at /Users/bzbarsky/mozilla/debug/mozilla/layout/generic/nsFrame.cpp:696
#7  0x0304df46 in nsDisplayBorder::OptimizeVisibility (this=0x1519220, aBuilder=0xbfff74b0, aVisibleRegion=0xbfff76f8) at /Users/bzbarsky/mozilla/debug/mozilla/layout/base/nsDisplayList.cpp:621
#8  0x0304e8d1 in nsDisplayList::OptimizeVisibility (this=0xbfff773c, aBuilder=0xbfff74b0, aVisibleRegion=0xbfff76f8) at /Users/bzbarsky/mozilla/debug/mozilla/layout/base/nsDisplayList.cpp:300
#9  0x03071f4e in nsLayoutUtils::PaintFrame (aRenderingContext=0x8f79090, aFrame=0x152d908, aDirtyRegion=@0xbfff77fc, aBackground=0) at /Users/bzbarsky/mozilla/debug/mozilla/layout/base/nsLayoutUtils.cpp:1120
#10 0x03084729 in PresShell::Paint (this=0x127b400, aView=0x1033f5d0, aRenderingContext=0x8f79090, aDirtyRegion=@0xbfff77fc) at /Users/bzbarsky/mozilla/debug/mozilla/layout/base/nsPresShell.cpp:5420
#11 0x0359b5b5 in nsViewManager::RenderViews (this=0xc42e970, aView=0x1033f5d0, aRC=@0x8f79090, aRegion=@0xbfff78b0) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:626
#12 0x0359fbb3 in nsViewManager::Refresh (this=0xc42e970, aView=0x1033f5d0, aContext=0x8f79090, aRegion=0x7c52e70, aUpdateFlags=1) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:512
#13 0x035a03ac in nsViewManager::DispatchEvent (this=0xc42e970, aEvent=0xbfff7c04, aStatus=0xbfff7aa8) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:1145
#14 0x03596991 in HandleEvent (aEvent=0xbfff7c04) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsView.cpp:167
#15 0x01d973bd in nsChildView::DispatchEvent (this=0x103c7aa0, event=0xbfff7c04, aStatus=@0xbfff7b7c) at /Users/bzbarsky/mozilla/debug/mozilla/widget/src/cocoa/nsChildView.mm:1927
#16 0x01d890cc in nsChildView::DispatchWindowEvent (this=0x103c7aa0, event=@0xbfff7c04) at /Users/bzbarsky/mozilla/debug/mozilla/widget/src/cocoa/nsChildView.mm:1940
#17 0x01d9c04e in -[ChildView drawRect:] (self=0x103c7b40, _cmd=0x96f385d0, aRect={origin = {x = 0, y = 33}, size = {width = 1152, height = 282}}) at /Users/bzbarsky/mozilla/debug/mozilla/widget/src/cocoa/nsChildView.mm:2974
#18 0x9150e864 in -[NSView _drawRect:clip:] ()
#19 0x9150c0d5 in -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] ()
#20 0x9150cb0b in -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] ()
#21 0x915f3db1 in -[NSNextStepFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] ()
#22 0x91508117 in -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] ()
#23 0x91448b77 in -[NSView displayIfNeeded] ()
#24 0x01d9320f in nsChildView::Update (this=0x103c7aa0) at /Users/bzbarsky/mozilla/debug/mozilla/widget/src/cocoa/nsChildView.mm:1753
#25 0x01d7e421 in nsCocoaWindow::Update (this=0x6edd920) at /Users/bzbarsky/mozilla/debug/mozilla/widget/src/cocoa/nsCocoaWindow.mm:1053
#26 0x0359d054 in nsViewManager::UpdateWidgetsForView (this=0xc42e970, aView=0x1033f5d0) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:1782
#27 0x0359d076 in nsViewManager::UpdateWidgetsForView (this=0xc42e970, aView=0xc42e9d0) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:1788
#28 0x0359d6cd in nsViewManager::ForceUpdate (this=0xc42e970) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:2024
#29 0x0359b638 in nsViewManager::Composite (this=0xc42e970) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:670
#30 0x0359edf4 in nsViewManager::EnableRefresh (this=0xc42e970, aUpdateFlags=2) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:1942
#31 0x0359d607 in nsViewManager::EndUpdateViewBatch (this=0xc42e970, aUpdateFlags=2) at /Users/bzbarsky/mozilla/debug/mozilla/view/src/nsViewManager.cpp:1991
#32 0x03030eb6 in nsIViewManager::UpdateViewBatch::EndUpdateViewBatch (this=0xbfff885c, aUpdateFlags=2) at nsIViewManager.h:384
#33 0x03095f6c in PresShell::DoFlushPendingNotifications (this=0x127b400, aType=Flush_Display, aInterruptibleReflow=0) at /Users/bzbarsky/mozilla/debug/mozilla/layout/base/nsPresShell.cpp:4585
#34 0x0309611e in PresShell::FlushPendingNotifications (this=0x127b400, aType=Flush_Display) at /Users/bzbarsky/mozilla/debug/mozilla/layout/base/nsPresShell.cpp:4507
#35 0x03327eda in nsDocument::FlushPendingNotifications (this=0x127ac00, aType=Flush_Display) at /Users/bzbarsky/mozilla/debug/mozilla/content/base/src/nsDocument.cpp:6228
#36 0x0386036f in nsSVGSVGElement::ForceRedraw (this=0xc4426d0) at /Users/bzbarsky/mozilla/debug/mozilla/content/svg/content/src/nsSVGSVGElement.cpp:445
#37 0x00479af1 in NS_InvokeByIndex_P (that=0xc442708, methodIndex=70, paramCount=0, params=0xbfff8b14) at /Users/bzbarsky/mozilla/debug/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_x86.cpp:179

etc (the rest is basically JS and event handling code, with a HidePopup in the middle there).  Not sure whether doing a paint like this from a popuphiding event handler could cause issues like this....
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.