Closed Bug 1111824 Opened 7 years ago Closed 7 years ago

Assertion failure: "If we added nothing to our budget then this shouldn't be called" in nsDisplayListBuilder::IsInWillChangeBudget()


(Core :: Layout, defect)

Gonk (Firefox OS)
Not set



tracking-b2g backlog
Tracking Status
b2g-master --- affected


(Reporter: botond, Unassigned)


  1. Build B2G in debug mode
  2. Open the Settings app
  3. Scroll down to the bottom
Flags: needinfo?(bgirard)
Another STR: Open SMS app and click on composing.

I/Gecko   ( 1544): [Parent 1544] WARNING: Channel provided to SetRequestContext is not an nsIHttpChannel so referrer is not available for reporting.: file ../../../dom/security/nsCSPContext.cpp, line 537
I/Gecko   ( 1789): [Child 1789] WARNING: Transparent content with displayports can be expensive.: file ../../../layout/base/nsDisplayList.cpp, line 1513
F/MOZ_Assert( 2312): Assertion failure: false (If we added nothing to our budget then this shouldn't be called.), at ../../../layout/base/nsDisplayList.cpp:1256
F/libc    ( 2312): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 2312 (Messages)
F/libc    ( 2312): Unable to open connection to debuggerd: Permission denied
And multiple other STRs like adding a contact. The phone is pretty broken with debug gecko right now.
OS: Linux → Gonk (Firefox OS)
Can we make this non-fatal until we fix it?
Probably.  Benoit?

I'm curious why it just regressed, though.

(A stack might also make it clearer why it's happening.)

(I'm also curious whether we want the error handling behavior to be returning true or false.)
Program received signal SIGSEGV, Segmentation fault.
0xb568ea5c in nsDisplayListBuilder::IsInWillChangeBudget (
    this=this@entry=0xbedbd0f8, aFrame=0xb16de5c8)
    at ../../../layout/base/nsDisplayList.cpp:1257
1257	    MOZ_ASSERT(false, "If we added nothing to our budget then this "
(gdb) bt
#0  0xb568ea5c in nsDisplayListBuilder::IsInWillChangeBudget (
    this=this@entry=0xbedbd0f8, aFrame=0xb16de5c8)
    at ../../../layout/base/nsDisplayList.cpp:1257
#1  0xb5703572 in mozilla::ScrollFrameHelper::IsScrollingActive (
    this=0xb16de618, aBuilder=0xbedbd0f8)
    at ../../../layout/generic/nsGfxScrollFrame.cpp:4238
#2  0xb56a9d58 in IsAnimatedGeometryRoot (aParent=0xbedbceec, 
    aFrame=0xb154c3f0, this=0xbedbd0f8)
    at ../../../layout/base/nsDisplayList.cpp:1141
#3  nsDisplayListBuilder::IsAnimatedGeometryRoot (this=0xbedbd0f8, 
    aFrame=0xb154c3f0, aParent=0xbedbceec)
    at ../../../layout/base/nsDisplayList.cpp:1109
#4  0xb56aa08e in ComputeAnimatedGeometryRootFor (aStopAtAncestor=0x0, 
    aFrame=<optimized out>, aBuilder=0xbedbd0f8)
    at ../../../layout/base/nsDisplayList.cpp:1164
#5  nsDisplayListBuilder::RecomputeCurrentAnimatedGeometryRoot (
    this=this@entry=0xbedbd0f8) at ../../../layout/base/nsDisplayList.cpp:1183
#6  0xb56aa1ce in nsDisplayListBuilder::nsDisplayListBuilder (this=0xbedbd0f8, 
    aReferenceFrame=0xb154b820, aMode=<optimized out>, 
    aBuildCaret=<optimized out>) at ../../../layout/base/nsDisplayList.cpp:567
#7  0xb56b2ab4 in nsLayoutUtils::GetFramesForArea (
    aFrame=aFrame@entry=0xb154b820, aRect=..., aOutFrames=..., 
    aFlags=aFlags@entry=2) at ../../../layout/base/nsLayoutUtils.cpp:2740
---Type <return> to continue, or q <return> to quit---
#8  0xb56b2bb0 in nsLayoutUtils::GetFrameForPoint (
    aFrame=aFrame@entry=0xb154b820, aPt=..., aFlags=aFlags@entry=2)
    at ../../../layout/base/nsLayoutUtils.cpp:2726
#9  0xb566c21e in mozilla::FindFrameTargetedByInputEvent (aEvent=aEvent@entry=
    0xbedbd898, aRootFrame=aRootFrame@entry=0xb154b820, 
    aPointRelativeToRootFrame=..., aFlags=<optimized out>)
    at ../../../layout/base/PositionedEventTargeting.cpp:387
#10 0xb56c8f50 in PresShell::HandleEvent (this=0xb2ef8040, 
    aFrame=<optimized out>, aEvent=0xbedbd898, 
    aDontRetargetEvents=<optimized out>, aEventStatus=0xbedbd7d0)
    at ../../../layout/base/nsPresShell.cpp:7604
#11 0xb5531868 in nsViewManager::DispatchEvent (this=<optimized out>, 
    aEvent=aEvent@entry=0xbedbd898, aView=aView@entry=0xb1b31420, 
    aStatus=aStatus@entry=0xbedbd7d0) at ../../view/nsViewManager.cpp:774
#12 0xb552f4d4 in nsView::HandleEvent (this=<optimized out>, 
    aEvent=0xbedbd898, aUseAttachedEvents=<optimized out>)
    at ../../view/nsView.cpp:1097
#13 0xb5537c78 in mozilla::widget::PuppetWidget::DispatchEvent (this=
    0xb23a9400, event=0xbedbd898, aStatus=@0xbedbd874: nsEventStatus_eIgnore)
    at ../../widget/PuppetWidget.cpp:332
#14 0xb5409f08 in DispatchWidgetEvent (event=..., this=<optimized out>)
    at ../../../dom/ipc/TabChild.cpp:642
#15 mozilla::dom::TabChildBase::DispatchWidgetEvent (this=<optimized out>,
Yes lets make it non fatal.

It's likely that we're incorrectly calling IsScrollingActive instead of the Maybe variant. I don't track the changes in that component so I'm not sure.
[Tracking Requested - why for this release]:
Doesn't seem to cause other serious regressions in b2g
We've changed the budget to be first-come-first-serve which allowed us to remove this assertion. The previous code was a lot more strict and this assertion would catch when we broke those requirements.
Closed: 7 years ago
Flags: needinfo?(bgirard)
Resolution: --- → DUPLICATE
Duplicate of bug: 1103106
You need to log in before you can comment on or make changes to this bug.