Closed Bug 1323697 Opened 8 years ago Closed 7 years ago

stylo: layout/generic/crashtests/1157011.html fatally asserts with "data.mPrevLines == 0 (Shouldn't have prev lines)"

Categories

(Core :: CSS Parsing and Computation, defect, P1)

defect

Tracking

()

RESOLVED FIXED

People

(Reporter: heycam, Unassigned)

References

Details

#0 0x00007fffe70f5c4f in CalculateColumnPrefISize (aRenderingContext=0x7fffffffa200, aEnumerator=..., aBaseISizeData=0x7fffffff5ca0) at /z/stylo/hg-incubator/layout/generic/nsRubyBaseContainerFrame.cpp:160 #1 0x00007fffe70f55a9 in nsRubyBaseContainerFrame::AddInlineMinISize (this=0x7fffb9455858, aRenderingContext=0x7fffffffa200, aData=0x7fffffff5ca0) at /z/stylo/hg-incubator/layout/generic/nsRubyBaseContainerFrame.cpp:219 #2 0x00007fffe7128108 in nsRubyFrame::AddInlineMinISize (this=0x7fffb94556b0, aRenderingContext=0x7fffffffa200, aData=0x7fffffff5ca0) at /z/stylo/hg-incubator/layout/generic/nsRubyFrame.cpp:75 #3 0x00007fffe7026687 in nsBlockFrame::GetMinISize (this=0x7fffb94554f0, aRenderingContext=0x7fffffffa200) at /z/stylo/hg-incubator/layout/generic/nsBlockFrame.cpp:742 #4 0x00007fffe6f9d522 in nsLayoutUtils::IntrinsicForAxis (aAxis=mozilla::eAxisHorizontal, aRenderingContext=0x7fffffffa200, aFrame=0x7fffb94554f0, aType=nsLayoutUtils::IntrinsicISizeType::MIN_ISIZE, aFlags=0, aMarginBoxMinSizeClamp=1073741824) at /z/stylo/hg-incubator/layout/base/nsLayoutUtils.cpp:5057 #5 0x00007fffe6f9ec80 in nsLayoutUtils::IntrinsicForContainer (aRenderingContext=0x7fffffffa200, aFrame=0x7fffb94554f0, aType=nsLayoutUtils::IntrinsicISizeType::MIN_ISIZE, aFlags=0) at /z/stylo/hg-incubator/layout/base/nsLayoutUtils.cpp:5188 #6 0x00007fffe7064c1f in nsFlexContainerFrame::GetMinISize (this=0x7fffb9455268, aRenderingContext=0x7fffffffa200) at /z/stylo/hg-incubator/layout/generic/nsFlexContainerFrame.cpp:4746 #7 0x00007fffe7055643 in nsFrame::ShrinkWidthToFit (this=0x7fffb9455268, aRenderingContext=0x7fffffffa200, aISizeInCB=47040, aFlags=nsIFrame::eShrinkWrap) at /z/stylo/hg-incubator/layout/generic/nsFrame.cpp:5447 #8 0x00007fffe70551cc in nsContainerFrame::ComputeAutoSize (this=0x7fffb9455268, aRenderingContext=0x7fffffffa200, aWM=..., aCBSize=..., aAvailableISize=48000, aMargin=..., aBorder=..., aPadding=..., aFlags=nsIFrame::eShrinkWrap) at /z/stylo/hg-incubator/layout/generic/nsContainerFrame.cpp:942 #9 0x00007fffe7058967 in nsFrame::ComputeSize (this=0x7fffb9455268, aRenderingContext=0x7fffffffa200, aWM=..., aCBSize=..., aAvailableISize=48000, aMargin=..., aBorder=..., aPadding=..., aFlags=nsIFrame::eShrinkWrap) at /z/stylo/hg-incubator/layout/generic/nsFrame.cpp:4703 #10 0x00007fffe700426c in mozilla::ReflowInput::InitConstraints (this=0x7fffffff7428, aPresContext=0x7fffb34dd000, aContainingBlockSize=..., aBorder=0x0, aPadding=0x0, aFrameType=0x7fffd366c310) at /z/stylo/hg-incubator/layout/generic/ReflowInput.cpp:2446 #11 0x00007fffe6fffeb0 in mozilla::ReflowInput::Init (this=0x7fffffff7428, aPresContext=0x7fffb34dd000, aContainingBlockSize=0x0, aBorder=0x0, aPadding=0x0) at /z/stylo/hg-incubator/layout/generic/ReflowInput.cpp:399 #12 0x00007fffe70014ca in mozilla::ReflowInput::ReflowInput (this=0x7fffffff7428, aPresContext=0x7fffb34dd000, aParentReflowInput=..., aFrame=0x7fffb9455268, aAvailableSpace=..., aContainingBlockSize=0x0, aFlags=0) at /z/stylo/hg-incubator/layout/generic/ReflowInput.cpp:258 #13 0x00007fffe6fed348 in mozilla::Maybe<mozilla::ReflowInput>::emplace<nsPresContext*&, mozilla::ReflowInput const&, nsIFrame*&, mozilla::LogicalSize&> (this=0x7fffffff7420, aArgs=..., aArgs=..., aArgs=..., aArgs=...) at /z/stylo/hg-incubator/obj/dist/include/mozilla/Maybe.h:432 #14 0x00007fffe6fe502e in nsLineLayout::ReflowFrame (this=0x7fffffff7a28, aFrame=0x7fffb9455268, aReflowStatus=@0x7fffffff7684: 32767, aMetrics=0x0, aPushedFrame=@0x7fffffff7683: false) at /z/stylo/hg-incubator/layout/generic/nsLineLayout.cpp:879 #15 0x00007fffe7038a65 in nsBlockFrame::ReflowInlineFrame (this=0x7fffb9454d30, aState=..., aLineLayout=..., aLine=..., aFrame=0x7fffb9455268, aLineReflowStatus=0x7fffffff78dc) at /z/stylo/hg-incubator/layout/generic/nsBlockFrame.cpp:4120 #16 0x00007fffe7037efb in nsBlockFrame::DoReflowInlineFrames (this=0x7fffb9454d30, aState=..., aLineLayout=..., aLine=..., aFloatAvailableSpace=..., aAvailableSpaceBSize=@0x7fffffff7b58: 0, aFloatStateBeforeLine=0x7fffffff7b30, aKeepReflowGoing=0x7fffffff813f, aLineReflowStatus=0x7fffffff7b5c, aAllowPullUp=true) at /z/stylo/hg-incubator/layout/generic/nsBlockFrame.cpp:3921 #17 0x00007fffe7034030 in nsBlockFrame::ReflowInlineFrames (this=0x7fffb9454d30, aState=..., aLine=..., aKeepReflowGoing=0x7fffffff813f) at /z/stylo/hg-incubator/layout/generic/nsBlockFrame.cpp:3795 #18 0x00007fffe7030823 in nsBlockFrame::ReflowLine (this=0x7fffb9454d30, aState=..., aLine=..., aKeepReflowGoing=0x7fffffff813f) at /z/stylo/hg-incubator/layout/generic/nsBlockFrame.cpp:2801 #19 0x00007fffe702bde4 in nsBlockFrame::ReflowDirtyLines (this=0x7fffb9454d30, aState=...) at /z/stylo/hg-incubator/layout/generic/nsBlockFrame.cpp:2337 #20 0x00007fffe70285b2 in nsBlockFrame::Reflow (this=0x7fffb9454d30, aPresContext=0x7fffb34dd000, aMetrics=..., aReflowInput=..., aStatus=@0x7fffffff92b0: 0) at /z/stylo/hg-incubator/layout/generic/nsBlockFrame.cpp:1200 #21 0x00007fffe704ebb7 in nsContainerFrame::ReflowChild (this=0x7fffb9454408, aKidFrame=0x7fffb9454d30, aPresContext=0x7fffb34dd000, aDesiredSize=..., aReflowInput=..., aWM=..., aPos=..., aContainerSize=..., aFlags=0, aStatus=@0x7fffffff92b0: 0, aTracker=0x0) at /z/stylo/hg-incubator/layout/generic/nsContainerFrame.cpp:1027 #22 0x00007fffe704e1c8 in nsCanvasFrame::Reflow (this=0x7fffb9454408, aPresContext=0x7fffb34dd000, aDesiredSize=..., aReflowInput=..., aStatus=@0x7fffffff92b0: 0) at /z/stylo/hg-incubator/layout/generic/nsCanvasFrame.cpp:677 #23 0x00007fffe704ebb7 in nsContainerFrame::ReflowChild (this=0x7fffb9454498, aKidFrame=0x7fffb9454408, aPresContext=0x7fffb34dd000, aDesiredSize=..., aReflowInput=..., aWM=..., aPos=..., aContainerSize=..., aFlags=3, aStatus=@0x7fffffff92b0: 0, aTracker=0x0) at /z/stylo/hg-incubator/layout/generic/nsContainerFrame.cpp:1027 #24 0x00007fffe70b2780 in nsHTMLScrollFrame::ReflowScrolledFrame (this=0x7fffb9454498, aState=0x7fffffff9790, aAssumeHScroll=false, aAssumeVScroll=true, aMetrics=0x7fffffff9588, aFirstPass=true) at /z/stylo/hg-incubator/layout/generic/nsGfxScrollFrame.cpp:552 #25 0x00007fffe70b3018 in nsHTMLScrollFrame::ReflowContents (this=0x7fffb9454498, aState=0x7fffffff9790, aDesiredSize=...) at /z/stylo/hg-incubator/layout/generic/nsGfxScrollFrame.cpp:664 #26 0x00007fffe70b44b0 in nsHTMLScrollFrame::Reflow (this=0x7fffb9454498, aPresContext=0x7fffb34dd000, aDesiredSize=..., aReflowInput=..., aStatus=@0x7fffffff9fd4: 0) at /z/stylo/hg-incubator/layout/generic/nsGfxScrollFrame.cpp:1039 #27 0x00007fffe70557ff in nsContainerFrame::ReflowChild (this=0x7fffb9454148, aKidFrame=0x7fffb9454498, aPresContext=0x7fffb34dd000, aDesiredSize=..., aReflowInput=..., aX=0, aY=0, aFlags=0, aStatus=@0x7fffffff9fd4: 0, aTracker=0x0) at /z/stylo/hg-incubator/layout/generic/nsContainerFrame.cpp:1070 #28 0x00007fffe70147f3 in mozilla::ViewportFrame::Reflow (this=0x7fffb9454148, aPresContext=0x7fffb34dd000, aDesiredSize=..., aReflowInput=..., aStatus=@0x7fffffff9fd4: 0) at /z/stylo/hg-incubator/layout/generic/ViewportFrame.cpp:316 #29 0x00007fffe6ef16e3 in mozilla::PresShell::DoReflow (this=0x7fffb3605c00, target=0x7fffb9454148, aInterruptible=false) at /z/stylo/hg-incubator/layout/base/PresShell.cpp:9401 #30 0x00007fffe6ef9865 in mozilla::PresShell::ProcessReflowCommands (this=0x7fffb3605c00, aInterruptible=false) at /z/stylo/hg-incubator/layout/base/PresShell.cpp:9574 #31 0x00007fffe6ef9435 in mozilla::PresShell::FlushPendingNotifications (this=0x7fffb3605c00, aFlush=...) at /z/stylo/hg-incubator/layout/base/PresShell.cpp:4150 #32 0x00007fffe6ef8ca0 in mozilla::PresShell::FlushPendingNotifications (this=0x7fffb3605c00, aType=Flush_Layout) at /z/stylo/hg-incubator/layout/base/PresShell.cpp:4007 #33 0x00007fffe6f7e94d in nsDocumentViewer::LoadComplete (this=0x7fffb655d5d0, aStatus=nsresult::NS_OK) at /z/stylo/hg-incubator/layout/base/nsDocumentViewer.cpp:953 #34 0x00007fffe772771d in nsDocShell::EndPageLoad (this=0x7fffb3691000, aProgress=0x7fffb3691028, aChannel=0x7fffb10867b0, aStatus=nsresult::NS_OK) at /z/stylo/hg-incubator/docshell/base/nsDocShell.cpp:7571 #35 0x00007fffe77259d3 in nsDocShell::OnStateChange (this=0x7fffb3691000, aProgress=0x7fffb3691028, aRequest=0x7fffb10867b0, aStateFlags=131088, aStatus=nsresult::NS_OK) at /z/stylo/hg-incubator/docshell/base/nsDocShell.cpp:7375 #36 0x00007fffe3f27cce in nsDocLoader::DoFireOnStateChange (this=0x7fffb3691000, aProgress=0x7fffb3691028, aRequest=0x7fffb10867b0, aStateFlags=@0x7fffffffb324: 131088, aStatus=nsresult::NS_OK) at /z/stylo/hg-incubator/uriloader/base/nsDocLoader.cpp:1255 #37 0x00007fffe3f277a9 in nsDocLoader::doStopDocumentLoad (this=0x7fffb3691000, request=0x7fffb10867b0, aStatus=nsresult::NS_OK) at /z/stylo/hg-incubator/uriloader/base/nsDocLoader.cpp:840 #38 0x00007fffe3f2626f in nsDocLoader::DocLoaderIsEmpty (this=0x7fffb3691000, aFlushLayout=true) at /z/stylo/hg-incubator/uriloader/base/nsDocLoader.cpp:730 #39 0x00007fffe3f271ac in nsDocLoader::OnStopRequest (this=0x7fffb3691000, aRequest=0x7fffb15e8160, aCtxt=0x0, aStatus=nsresult::NS_OK) at /z/stylo/hg-incubator/uriloader/base/nsDocLoader.cpp:612 #40 0x00007fffe2c4798f in mozilla::net::nsLoadGroup::RemoveRequest (this=0x7fffb29f9bc0, request=0x7fffb15e8160, ctxt=0x0, aStatus=nsresult::NS_OK) at /z/stylo/hg-incubator/netwerk/base/nsLoadGroup.cpp:633 #41 0x00007fffe48a9dd0 in nsDocument::DoUnblockOnload (this=0x7fffb60f2000) at /z/stylo/hg-incubator/dom/base/nsDocument.cpp:8622 #42 0x00007fffe48a9b8d in nsDocument::UnblockOnload (this=0x7fffb60f2000, aFireSync=true) at /z/stylo/hg-incubator/dom/base/nsDocument.cpp:8550 #43 0x00007fffe489ab73 in nsDocument::DispatchContentLoadedEvents (this=0x7fffb60f2000) at /z/stylo/hg-incubator/dom/base/nsDocument.cpp:5058 #44 0x00007fffe4928d1a in mozilla::detail::RunnableMethodArguments<>::applyImpl<nsDocument, void (nsDocument::*)()>(nsDocument*, void (nsDocument::*)(), mozilla::Tuple<>&, mozilla::IndexSequence<>) (o=0x7fffb60f2000, m=(void (nsDocument::*)(nsDocument * const)) 0x7fffe489a380 <nsDocument::DispatchContentLoadedEvents()>, args=...) at /z/stylo/hg-incubator/obj/dist/include/nsThreadUtils.h:791 #45 0x00007fffe4928c99 in mozilla::detail::RunnableMethodArguments<>::apply<nsDocument, void (nsDocument::*)()>(nsDocument*, void (nsDocument::*)()) (this=0x7fffb8bf7b90, o=0x7fffb60f2000, m=(void (nsDocument::*)(nsDocument * const)) 0x7fffe489a380 <nsDocument::DispatchContentLoadedEvents()>) at /z/stylo/hg-incubator/obj/dist/include/nsThreadUtils.h:797 #46 0x00007fffe4928b22 in mozilla::detail::RunnableMethodImpl<void (nsDocument::*)(), true, false>::Run (this=0x7fffb8bf7b50) at /z/stylo/hg-incubator/obj/dist/include/nsThreadUtils.h:826 #47 0x00007fffe2ad0ca8 in nsThread::ProcessNextEvent (this=0x7fffdfe3d300, aMayWait=false, aResult=0x7fffffffbd4e) at /z/stylo/hg-incubator/xpcom/threads/nsThread.cpp:1213 #48 0x00007fffe2b505fc in NS_ProcessNextEvent (aThread=0x7fffdfe3d300, aMayWait=false) at /z/stylo/hg-incubator/xpcom/glue/nsThreadUtils.cpp:381 #49 0x00007fffe33cb0e9 in mozilla::ipc::MessagePump::Run (this=0x7fffdfe98a80, aDelegate=0x7ffff6bb2410) at /z/stylo/hg-incubator/ipc/glue/MessagePump.cpp:96 #50 0x00007fffe33296c5 in MessageLoop::RunInternal (this=0x7ffff6bb2410) at /z/stylo/hg-incubator/ipc/chromium/src/base/message_loop.cc:232 #51 0x00007fffe3329645 in MessageLoop::RunHandler (this=0x7ffff6bb2410) at /z/stylo/hg-incubator/ipc/chromium/src/base/message_loop.cc:225 #52 0x00007fffe332961d in MessageLoop::Run (this=0x7ffff6bb2410) at /z/stylo/hg-incubator/ipc/chromium/src/base/message_loop.cc:205 #53 0x00007fffe6ad4003 in nsBaseAppShell::Run (this=0x7fffd36e7970) at /z/stylo/hg-incubator/widget/nsBaseAppShell.cpp:156 #54 0x00007fffe7cab192 in nsAppStartup::Run (this=0x7fffd36ef880) at /z/stylo/hg-incubator/toolkit/components/startup/nsAppStartup.cpp:283 #55 0x00007fffe7da48ac in XREMain::XRE_mainRun (this=0x7fffffffc728) at /z/stylo/hg-incubator/toolkit/xre/nsAppRunner.cpp:4485 #56 0x00007fffe7da5396 in XREMain::XRE_main (this=0x7fffffffc728, argc=4, argv=0x7fffffffdc08, aAppData=0x7fffffffc9e8) at /z/stylo/hg-incubator/toolkit/xre/nsAppRunner.cpp:4618 #57 0x00007fffe7da5b6f in XRE_main (argc=4, argv=0x7fffffffdc08, aAppData=0x7fffffffc9e8, aFlags=0) at /z/stylo/hg-incubator/toolkit/xre/nsAppRunner.cpp:4709 #58 0x000000000040633f in do_main (argc=4, argv=0x7fffffffdc08, envp=0x7fffffffdc30, xreDirectory=0x7ffff6b5eb40) at /z/stylo/hg-incubator/browser/app/nsBrowserApp.cpp:328 #59 0x0000000000405a62 in main (argc=4, argv=0x7fffffffdc08, envp=0x7fffffffdc30) at /z/stylo/hg-incubator/browser/app/nsBrowserApp.cpp:461
Priority: -- → P3
Marking this as P1 because it's the remaining crashes in crashtest
Priority: P3 → P1
Ruby stuff involves. Likely depends on the inlinization for ruby.
Depends on: 1364274
I've done some investigation and I've found that the key difference between a Gecko run and a Stylo run is here: http://searchfox.org/mozilla-central/source/layout/generic/nsContainerFrame.cpp#801 . At this point the "kid" (the first child / next-in-flow frame of the nsRubyBaseContainerFrame) is different. In Gecko, there's an nsTextFrame there, followed by a BRFrame. In Stylo, it starts with a BRFrame. It's likely the problem in Stylo is that we are not generating the nsTextFrame properly.
(In reply to Brad Werth [:bradwerth] from comment #3) > In Stylo, it starts with a BRFrame. It's likely the problem in Stylo is that we are not generating the nsTextFrame properly. I spoke too soon; Stylo does also create the nsTextFrame followed by the BRFrame in this case. Something else...
In Gecko, the BRFrame parent nsStyleContext has the NS_STYLE_SUPPRESS_LINEBREAK bit set. In Stylo, that bit is clear, which makes the if case in BRFrame::AddInlinePrefISize lead to nsIFrame::InlinePrefISizeData::ForceBreak. That function sets mPrevLines which is the source of the assertion later, in CalculateColumnPrefISize. I haven't yet found when and how the NS_STYLE_SUPPRESS_LINEBREAK bit is cleared (or not set) in Stylo.
That bit is exactly what inlinization should set, so it would likely be fixed by that bug.
Should have been fixed by bug 1364274.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.