New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 640898 link

Starred by 4 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

ASSERTION FAILED: createsNewFormattingContext() ../../third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp(321) : virtual bool blink::LayoutBlockFlow::isSelfCollapsingBlock() const

Project Member Reported by ukai@chromium.org, Aug 25 2016

Issue description

Version: 54.0.2839.0 (Developer Build) (64-bit) with dcheck_always_on=1
OS: Linux

What steps will reproduce the problem?
(1) crbug.com
(2) login page, enter password
(3)

What is the expected output?

What do you see instead?
renderer crashed

ASSERTION FAILED: createsNewFormattingContext()
../../third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp(321) : virtual bool blink::LayoutBlockFlow::isSelfCollapsingBlock() const
1   0x7fffea952557 blink::LayoutBox::layoutOverflowRectForPropagation(blink::ComputedStyle const&) const
2   0x7fffea952347 blink::LayoutBox::addOverflowFromChild(blink::LayoutBox*, blink::LayoutSize const&)
3   0x7fffea9160f0 blink::LayoutBlock::addOverflowFromBlockChildren()
4   0x7fffea916186 blink::LayoutBlock::computeOverflow(blink::LayoutUnit, bool)
5   0x7fffea929c08 blink::LayoutBlockFlow::computeOverflow(blink::LayoutUnit, bool)
6   0x7fffea91d66f blink::LayoutBlock::recalcOverflowAfterStyleChange()
7   0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded(blink::LayoutObject*)
8   0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
9   0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
10  0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded(blink::LayoutObject*)
11  0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
12  0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
13  0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded(blink::LayoutObject*)
14  0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
15  0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
16  0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded(blink::LayoutObject*)
17  0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
18  0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
19  0x7fffea91d928 blink::LayoutBlock::recalcPositionedDescendantsOverflowAfterStyleChange()
20  0x7fffea91d821 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
21  0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
22  0x7fffea91d928 blink::LayoutBlock::recalcPositionedDescendantsOverflowAfterStyleChange()
23  0x7fffea91d821 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
24  0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
25  0x7fffea66b1ab blink::FrameView::recalcOverflowAfterStyleChange()
26  0x7fffea07dad2 blink::Document::updateStyle()
27  0x7fffea07a21f blink::Document::updateStyleAndLayoutTree()
28  0x7fffea07f05e blink::Document::updateStyleAndLayoutTreeIgnorePendingStylesheets()
29  0x7fffea07e97d blink::Document::updateStyleAndLayoutIgnorePendingStylesheets(blink::Document::RunPostLayoutTasks)
30  0x7fffea0b86c3 blink::Element::boundsInViewport() const
31  0x7ffff5d75ec4 content::RenderViewImpl::focusedNodeChanged(blink::WebNode const&, blink::WebNode const&)
Received signal 11 SEGV_MAPERR 0000fbadbeef
#0 0x7ffff7a737e7 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#1 0x7ffff7bcc330 <unknown>
#2 0x7fffea921119 blink::LayoutBlockFlow::isSelfCollapsingBlock()
#3 0x7fffea952557 blink::LayoutBox::layoutOverflowRectForPropagation()
#4 0x7fffea952347 blink::LayoutBox::addOverflowFromChild()
#5 0x7fffea9160f0 blink::LayoutBlock::addOverflowFromBlockChildren()
#6 0x7fffea916186 blink::LayoutBlock::computeOverflow()
#7 0x7fffea929c08 blink::LayoutBlockFlow::computeOverflow()
#8 0x7fffea91d66f blink::LayoutBlock::recalcOverflowAfterStyleChange()
#9 0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded()
#10 0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
#11 0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
#12 0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded()
#13 0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
#14 0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
#15 0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded()
#16 0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
#17 0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
#18 0x7fffea91d4f3 blink::LayoutBlock::recalcNormalFlowChildOverflowIfNeeded()
#19 0x7fffea91d798 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
#20 0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
#21 0x7fffea91d928 blink::LayoutBlock::recalcPositionedDescendantsOverflowAfterStyleChange()
#22 0x7fffea91d821 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
#23 0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
#24 0x7fffea91d928 blink::LayoutBlock::recalcPositionedDescendantsOverflowAfterStyleChange()
#25 0x7fffea91d821 blink::LayoutBlock::recalcChildOverflowAfterStyleChange()
#26 0x7fffea91d58c blink::LayoutBlock::recalcOverflowAfterStyleChange()
#27 0x7fffea66b1ab blink::FrameView::recalcOverflowAfterStyleChange()
#28 0x7fffea07dad2 blink::Document::updateStyle()
#29 0x7fffea07a21f blink::Document::updateStyleAndLayoutTree()
#30 0x7fffea07f05e blink::Document::updateStyleAndLayoutTreeIgnorePendingStylesheets()
#31 0x7fffea07e97d blink::Document::updateStyleAndLayoutIgnorePendingStylesheets()
#32 0x7fffea0b86c3 blink::Element::boundsInViewport()
#33 0x7ffff5d75ec4 content::RenderViewImpl::focusedNodeChanged()
#34 0x7ffff202769b blink::ChromeClientImpl::focusedNodeChanged()
#35 0x7fffea086865 blink::Document::setFocusedElement()
#36 0x7fffea7deab9 blink::FocusController::setFocusedElement()
#37 0x7fffea1c2ba5 blink::EventHandler::handleMouseFocus()
#38 0x7fffea1c1ff8 blink::EventHandler::handleMousePressEvent()
#39 0x7ffff2057732 blink::PageWidgetEventHandler::handleMouseDown()
#40 0x7ffff20d5875 blink::WebViewImpl::handleMouseDown()
#41 0x7ffff20574c4 blink::PageWidgetDelegate::handleInputEvent()
#42 0x7ffff20d8144 blink::WebViewImpl::handleInputEvent()
#43 0x7ffff5ce7802 content::RenderWidgetInputHandler::HandleInputEvent()
#44 0x7ffff5d7d26f _ZN3IPC8MessageTI30InputMsg_HandleInputEvent_MetaSt5tupleIJPKN5blink13WebInputEventEN2ui11LatencyInfoEN7content22InputEventDispatchTypeEEEvE8DispatchINS9_12RenderWidgetESE_vMSE_FvS6_RKS8_SA_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#45 0x7ffff5d7ca1a content::RenderWidget::OnMessageReceived()
#46 0x7ffff5d6c285 content::RenderViewImpl::OnMessageReceived()
#47 0x7ffff496fff9 IPC::MessageRouter::RouteMessage()
#48 0x7ffff496ff3a IPC::MessageRouter::OnMessageReceived()
#49 0x7ffff5281db3 content::ChildThreadImpl::OnMessageReceived()
#50 0x7ffff5ce2ff1 content::InputEventFilter::HandleEventOnMainThread()
#51 0x7ffff5ce5b11 content::MainThreadEventQueue::PopEventOnMainThread()
#52 0x7ffff7a74796 base::debug::TaskAnnotator::RunTask()
#53 0x7ffff2429e07 blink::scheduler::TaskQueueManager::ProcessTaskFromWorkQueue()
#54 0x7ffff24289b9 blink::scheduler::TaskQueueManager::DoWork()
#55 0x7ffff7a74796 base::debug::TaskAnnotator::RunTask()
#56 0x7ffff7a9f105 base::MessageLoop::RunTask()
#57 0x7ffff7a9f468 base::MessageLoop::DeferOrRunPendingTask()
#58 0x7ffff7a9f81b base::MessageLoop::DoWork()
#59 0x7ffff7aa0fee base::MessagePumpDefault::Run()
#60 0x7ffff7a9ec01 base::MessageLoop::RunHandler()
#61 0x7ffff7acd090 base::RunLoop::Run()
  r8: 00007fffe425fa00  r9: 6f4e6265573a3a6b r10: 00007fffeedfcbe0 r11: 0000000000000000
 r12: 00000000fbadbeef r13: 00000d4cc505c010 r14: 00000000fbadbeef r15: 00007fffffff83b0
  di: 00001413e63bd0f8  si: 00001413e6993f00  bp: 00000d4cc505c010  bx: 00000d4cc505c010
  dx: 0000000000000993  ax: 585562e28011a400  cx: 0000000000000144  sp: 00007fffffff8250
  ip: 00007fffea921119 efl: 0000000000010246 cgf: 0000000000000033 erf: 0000000000000006
 trp: 000000000000000e msk: 0000000000000000 cr2: 00000000fbadbeef
[end of stack trace]


Please use labels and text to provide additional information.
https://chromium.googlesource.com/chromium/src/+/43862543cb7622a39c6fbc7895ffe03ba5337f54
 

Comment 1 by msten...@opera.com, Aug 25 2016

Can't reproduce this. Maybe because I have a two-factor login mechanism with my @opera.com address.

Can you create a reduced test case that doesn't require user interaction?

Comment 2 by ukai@chromium.org, Aug 26 2016

I also use 2FA login. It crashed when prompting security key touch.

Comment 3 by e...@chromium.org, Aug 26 2016

Labels: Needs-Feedback

Comment 4 by e...@chromium.org, Oct 30 2016

Status: WontFix (was: Untriaged)

Comment 5 by oleg...@gmail.com, Mar 28 2017

Issue is still reproduced on dev build. Load attached file (requires bootstrap.css from CDN) and wait for 3 seconds.
DCHECK_in_LayoutBlockFlow.html
392 bytes View Download

Comment 6 by msten...@opera.com, Mar 28 2017

Labels: -Needs-Feedback
Status: Available (was: WontFix)
Indeed, reproduced. Turned out that it's only reproducible with Chrome, not with content_shell. Probably some differences in form control themes between the two of them.

Comment 7 by msten...@opera.com, Mar 28 2017

And thanks for the simplified test!

Comment 8 by msten...@opera.com, Mar 28 2017

Reduced test case. This one also fails in content_shell, so I guess there were some timing sensitivity in the original test. There was a transition effect for box-shadow, and a stylesheet that got applied after initial layout.
tc.html
370 bytes View Download

Comment 9 by msten...@opera.com, Mar 29 2017

Cc: trchen@chromium.org
This has to do with the recalcOverflowAfterStyleChange() machinery not taking into account that even if some layout object doesn't need layout, this doesn't necessarily mean that none of its descendants need it. A relayout boundary object [1], such as a text control, or object with non-visible overflow, or one that contains layout+size [2], allows layout to start at that object, rather than starting at the root LayoutView.

[1] See objectIsRelayoutBoundary() in LayoutObject.cpp
[2] https://drafts.csswg.org/css-contain-1/#containment-layout
tc-minimal.html
762 bytes View Download
Project Member

Comment 10 by sheriffbot@chromium.org, Apr 12 2018

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 11 by e...@chromium.org, Apr 18 2018

Status: Available (was: Untriaged)

Sign in to add a comment