Bug 136929 - ASSERT in RenderBox::instrinsicScrollbarLogicalWidth opening the inspector
Summary: ASSERT in RenderBox::instrinsicScrollbarLogicalWidth opening the inspector
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-09-18 13:41 PDT by Joseph Pecoraro
Modified: 2014-09-18 14:38 PDT (History)
3 users (show)

See Also:


Attachments
Patch (2.26 KB, patch)
2014-09-18 14:22 PDT, Beth Dakin
simon.fraser: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Joseph Pecoraro 2014-09-18 13:41:06 PDT
ASSERT in RenderBox::instrinsicScrollbarLogicalWidth opening the inspector.

Could this be related to the following? There was very similar code with asserts that got removed in the change:
<https://webkit.org/b/136861> overflow:scroll should not leave space for a scroll corner with overlay scrollbars


    (lldb) bt
    * thread #1: tid = 0x202065, 0x000000011314d3aa JavaScriptCore`WTFCrash + 42 at Assertions.cpp:334, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xbbadbeef)
      * frame #0: 0x000000011314d3aa JavaScriptCore`WTFCrash + 42 at Assertions.cpp:334
        frame #1: 0x0000000115c1627b WebCore`WebCore::RenderBox::instrinsicScrollbarLogicalWidth(this=0x00007fa32c88fff0) const + 171 at RenderBox.cpp:767
        frame #2: 0x0000000115bdb7bd WebCore`WebCore::RenderBlockFlow::computeIntrinsicLogicalWidths(this=0x00007fa32c88fff0, minLogicalWidth=0x00007fa32c890068, maxLogicalWidth=0x00007fa32c89006c) const + 893 at RenderBlockFlow.cpp:377
        frame #3: 0x0000000115bb5578 WebCore`WebCore::RenderBlock::computePreferredLogicalWidths(this=0x00007fa32c88fff0) + 536 at RenderBlock.cpp:2777
        frame #4: 0x0000000115c175b9 WebCore`WebCore::RenderBox::maxPreferredLogicalWidth(this=0x00007fa32c88fff0) const + 89 at RenderBox.cpp:1008
        frame #5: 0x0000000115c271f1 WebCore`WebCore::RenderBox::computePositionedLogicalWidthUsing(this=0x00007fa32c88fff0, logicalWidth=<unavailable>, containerBlock=0x00007fa3466f4da0, containerDirection=LTR, containerLogicalWidth=LayoutUnit at 0x00007fff56aec0c8, bordersPlusPadding=LayoutUnit at 0x00007fff56aec0c0, logicalLeft=<unavailable>, logicalRight=<unavailable>, marginLogicalLeft=<unavailable>, marginLogicalRight=Length at 0x00007fff56aec3e0, computedValues=0x00007fff56aec830) const + 2417 at RenderBox.cpp:3500
        frame #6: 0x0000000115c1f443 WebCore`WebCore::RenderBox::computePositionedLogicalWidth(this=0x00007fa32c88fff0, computedValues=0x00007fff56aec830, region=0x0000000000000000) const + 835 at RenderBox.cpp:3296
        frame #7: 0x0000000115c1e486 WebCore`WebCore::RenderBox::computeLogicalWidthInRegion(this=0x00007fa32c88fff0, computedValues=0x00007fff56aec830, region=0x0000000000000000) const + 310 at RenderBox.cpp:2275
        frame #8: 0x0000000115c1e2e7 WebCore`WebCore::RenderBox::updateLogicalWidth(this=0x00007fa32c88fff0) + 55 at RenderBox.cpp:2257
        frame #9: 0x0000000115ba9743 WebCore`WebCore::RenderBlock::recomputeLogicalWidth(this=0x00007fa32c88fff0) + 51 at RenderBlock.cpp:1069
        frame #10: 0x0000000115bdcbaf WebCore`WebCore::RenderBlockFlow::recomputeLogicalWidthAndColumnWidth(this=0x00007fa32c88fff0) + 31 at RenderBlockFlow.cpp:384
        frame #11: 0x0000000115bdd64b WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa32c88fff0, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aecc08) + 235 at RenderBlockFlow.cpp:439
        frame #12: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa32c88fff0) + 125 at RenderBlock.cpp:1019
        frame #13: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa32c88fff0) + 60 at RenderElement.h:102
        frame #14: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa3466f4da0, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #15: 0x0000000115bdde73 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa3466f4da0, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aed108) + 2323 at RenderBlockFlow.cpp:525
        frame #16: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3466f4da0) + 125 at RenderBlock.cpp:1019
        frame #17: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3466f4da0) + 60 at RenderElement.h:102
        frame #18: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa3466f2ac0, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #19: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa3466f2ac0) + 632 at RenderBlock.cpp:1337
        frame #20: 0x0000000115bdd5e9 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa3466f2ac0, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aed6b8) + 137 at RenderBlockFlow.cpp:434
        frame #21: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3466f2ac0) + 125 at RenderBlock.cpp:1019
        frame #22: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3466f2ac0) + 60 at RenderElement.h:102
        frame #23: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa3475b0270, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #24: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa3475b0270) + 632 at RenderBlock.cpp:1337
        frame #25: 0x0000000115bdd5e9 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa3475b0270, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aedc68) + 137 at RenderBlockFlow.cpp:434
        frame #26: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3475b0270) + 125 at RenderBlock.cpp:1019
        frame #27: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3475b0270) + 60 at RenderElement.h:102
        frame #28: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa3472aad40, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #29: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa3472aad40) + 632 at RenderBlock.cpp:1337
        frame #30: 0x0000000115bdd5e9 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa3472aad40, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aee218) + 137 at RenderBlockFlow.cpp:434
        frame #31: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3472aad40) + 125 at RenderBlock.cpp:1019
        frame #32: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3472aad40) + 60 at RenderElement.h:102
        frame #33: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa3472aaaf0, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #34: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa3472aaaf0) + 632 at RenderBlock.cpp:1337
        frame #35: 0x0000000115bdd5e9 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa3472aaaf0, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aee7c8) + 137 at RenderBlockFlow.cpp:434
        frame #36: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3472aaaf0) + 125 at RenderBlock.cpp:1019
        frame #37: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3472aaaf0) + 60 at RenderElement.h:102
        frame #38: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa3472aa870, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #39: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa3472aa870) + 632 at RenderBlock.cpp:1337
        frame #40: 0x0000000115bdd5e9 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa3472aa870, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aeed78) + 137 at RenderBlockFlow.cpp:434
        frame #41: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3472aa870) + 125 at RenderBlock.cpp:1019
        frame #42: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3472aa870) + 60 at RenderElement.h:102
        frame #43: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa3472aa250, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #44: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa3472aa250) + 632 at RenderBlock.cpp:1337
        frame #45: 0x0000000115bdd5e9 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa3472aa250, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56aef328) + 137 at RenderBlockFlow.cpp:434
        frame #46: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3472aa250) + 125 at RenderBlock.cpp:1019
        frame #47: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3472aa250) + 60 at RenderElement.h:102
        frame #48: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa34720be60, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #49: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa34720be60) + 632 at RenderBlock.cpp:1337
        frame #50: 0x0000000115c8057a WebCore`WebCore::RenderFlexibleBox::layoutBlock(this=0x00007fa34720be60, relayoutChildren=false, (null)=LayoutUnit at 0x00007fff56aef778) + 122 at RenderFlexibleBox.cpp:257
        frame #51: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa34720be60) + 125 at RenderBlock.cpp:1019
        frame #52: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa34720be60) + 60 at RenderElement.h:102
        frame #53: 0x0000000115baac47 WebCore`WebCore::RenderBlock::simplifiedNormalFlowLayout(this=0x00007fa347209060) + 679 at RenderBlock.cpp:1306
        frame #54: 0x0000000115baae24 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa347209060) + 420 at RenderBlock.cpp:1323
        frame #55: 0x0000000115c8057a WebCore`WebCore::RenderFlexibleBox::layoutBlock(this=0x00007fa347209060, relayoutChildren=false, (null)=LayoutUnit at 0x00007fff56aefbd8) + 122 at RenderFlexibleBox.cpp:257
        frame #56: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa347209060) + 125 at RenderBlock.cpp:1019
        frame #57: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa347209060) + 60 at RenderElement.h:102
        frame #58: 0x0000000115baac47 WebCore`WebCore::RenderBlock::simplifiedNormalFlowLayout(this=0x00007fa347208b90) + 679 at RenderBlock.cpp:1306
        frame #59: 0x0000000115baae24 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa347208b90) + 420 at RenderBlock.cpp:1323
        frame #60: 0x0000000115c8057a WebCore`WebCore::RenderFlexibleBox::layoutBlock(this=0x00007fa347208b90, relayoutChildren=false, (null)=LayoutUnit at 0x00007fff56af0038) + 122 at RenderFlexibleBox.cpp:257
        frame #61: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa347208b90) + 125 at RenderBlock.cpp:1019
        frame #62: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa347208b90) + 60 at RenderElement.h:102
        frame #63: 0x0000000115baac47 WebCore`WebCore::RenderBlock::simplifiedNormalFlowLayout(this=0x00007fa3472081c0) + 679 at RenderBlock.cpp:1306
        frame #64: 0x0000000115baae24 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa3472081c0) + 420 at RenderBlock.cpp:1323
        frame #65: 0x0000000115c8057a WebCore`WebCore::RenderFlexibleBox::layoutBlock(this=0x00007fa3472081c0, relayoutChildren=false, (null)=LayoutUnit at 0x00007fff56af0498) + 122 at RenderFlexibleBox.cpp:257
        frame #66: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa3472081c0) + 125 at RenderBlock.cpp:1019
        frame #67: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa3472081c0) + 60 at RenderElement.h:102
        frame #68: 0x0000000115baac47 WebCore`WebCore::RenderBlock::simplifiedNormalFlowLayout(this=0x00007fa347202b40) + 679 at RenderBlock.cpp:1306
        frame #69: 0x0000000115baae24 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa347202b40) + 420 at RenderBlock.cpp:1323
        frame #70: 0x0000000115c8057a WebCore`WebCore::RenderFlexibleBox::layoutBlock(this=0x00007fa347202b40, relayoutChildren=false, (null)=LayoutUnit at 0x00007fff56af08f8) + 122 at RenderFlexibleBox.cpp:257
        frame #71: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa347202b40) + 125 at RenderBlock.cpp:1019
        frame #72: 0x0000000114ce889c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00007fa347202b40) + 60 at RenderElement.h:102
        frame #73: 0x0000000115bab25c WebCore`WebCore::RenderBlock::layoutPositionedObjects(this=0x00007fa33dd0ab90, relayoutChildren=false, fixedPositionObjectsOnly=false) + 668 at RenderBlock.cpp:1456
        frame #74: 0x0000000115baaef8 WebCore`WebCore::RenderBlock::simplifiedLayout(this=0x00007fa33dd0ab90) + 632 at RenderBlock.cpp:1337
        frame #75: 0x0000000115bdd5e9 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00007fa33dd0ab90, relayoutChildren=false, pageLogicalHeight=LayoutUnit at 0x00007fff56af0e18) + 137 at RenderBlockFlow.cpp:434
        frame #76: 0x0000000115ba957d WebCore`WebCore::RenderBlock::layout(this=0x00007fa33dd0ab90) + 125 at RenderBlock.cpp:1019
        frame #77: 0x0000000115ec357d WebCore`WebCore::RenderView::layoutContent(this=0x00007fa33dd0ab90, state=0x00007fa32c891ef0) + 93 at RenderView.cpp:230
        frame #78: 0x0000000115ec43e1 WebCore`WebCore::RenderView::layout(this=0x00007fa33dd0ab90) + 1873 at RenderView.cpp:355
        frame #79: 0x0000000114e1b604 WebCore`WebCore::FrameView::layout(this=0x00007fa341807a00, allowSubtree=true) + 3220 at FrameView.cpp:1301
        frame #80: 0x0000000114a7cd2d WebCore`WebCore::Document::updateLayout(this=0x00007fa341802600) + 349 at Document.cpp:1821
        frame #81: 0x0000000114a80222 WebCore`WebCore::Document::updateLayoutIgnorePendingStylesheets(this=0x00007fa341802600, runPostLayoutTasks=Asynchronously) + 210 at Document.cpp:1853
        frame #82: 0x0000000114c1f8dc WebCore`WebCore::Element::clientHeight(this=0x00007fa34728e6a0) + 44 at Element.cpp:776
        frame #83: 0x000000011544e20c WebCore`WebCore::jsElementClientHeight(exec=0x00007fff56af1880, slotBase=0x000000011dfff740, thisValue=4798395408, (null)=PropertyName at 0x00007fff56af1580) + 204 at JSElement.cpp:734
        frame #84: 0x00000001128d44d8 JavaScriptCore`JSC::PropertySlot::getValue(this=0x00007fff56af1750, exec=0x00007fff56af1880, propertyName=PropertyName at 0x00007fff56af15e0) const + 184 at PropertySlot.h:255
        frame #85: 0x00000001128f7da7 JavaScriptCore`JSC::JSValue::get(this=0x00007fff56af1788, exec=0x00007fff56af1880, propertyName=PropertyName at 0x00007fff56af1650, slot=0x00007fff56af1750) const + 295 at JSCJSValueInlines.h:696
        frame #86: 0x0000000112f11d71 JavaScriptCore`llint_slow_path_get_by_id(exec=0x00007fff56af1880, pc=0x00007fa33e2f7dc0) + 241 at LLIntSlowPaths.cpp:578
        ...
Comment 1 Beth Dakin 2014-09-18 14:22:52 PDT
Created attachment 238323 [details]
Patch
Comment 2 Simon Fraser (smfr) 2014-09-18 14:32:12 PDT
Comment on attachment 238323 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=238323&action=review

> Source/WebCore/ChangeLog:14
> +        change, overflow:scroll elements would always, universally create scrollbars 
> +        regardless of whether or not there was content to scroll to. But that was a very 
> +        silly thing to do in the overlay scrollbar case, so we stopped doing it, and 
> +        reaped various benefits outlined in that bug as a result. This code is wrong in 
> +        our brave new world because it assumes that overflow:scroll will always have a 
> +        scrollbar. That is no longer the case. We need to check to make sure itâs an 

I think you could say less about what r173668 did.
Comment 3 Beth Dakin 2014-09-18 14:38:14 PDT
Thanks Simon! http://trac.webkit.org/changeset/173734