[LayoutNG] DCHECK failure in ComputeOffsetMappingIfNeeded for stackoverflow |
||
Issue descriptionmstensho@ found this while investigating issue 861623 (comment #12) when loading: https://ja.stackoverflow.com/questions/45438/%E3%81%93%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E9%87%8F%E3%82%92%E6%B8%9B%E3%82%89%E3%81%97%E3%81%9F%E3%81%84 DCHECK failure when loading: [26124:49163:0830/111413.808288:FATAL:ng_inline_node.cc(323)] Check failed: data->text_content == text ("\u30ED\u30B0\u30A4\u30F3 \u767B\u9332" vs. "\u30ED\u30B0\u30A4\u30F3\u767B\u9332") 0 libbase.dylib 0x0000000111953c1e base::debug::StackTrace::StackTrace(unsigned long) + 174 1 libbase.dylib 0x0000000111953cdd base::debug::StackTrace::StackTrace(unsigned long) + 29 2 libbase.dylib 0x000000011152ec5c base::debug::StackTrace::StackTrace() + 28 3 libbase.dylib 0x00000001115aa8dc logging::LogMessage::~LogMessage() + 460 4 libbase.dylib 0x00000001115a84d5 logging::LogMessage::~LogMessage() + 21 5 libblink_core.dylib 0x0000000136f9dace blink::NGInlineNode::ComputeOffsetMappingIfNeeded() + 606 6 libblink_core.dylib 0x0000000136f9c527 blink::NGInlineNode::PrepareLayoutIfNeeded() + 1303 7 libblink_core.dylib 0x0000000136f9dfb9 blink::NGInlineNode::EnsureData() + 25 8 libblink_core.dylib 0x0000000136f92ac5 blink::NGInlineNode::IsEmptyInline() + 21 9 libblink_core.dylib 0x0000000136fe96f8 blink::NGBlockLayoutAlgorithm::HandleInflow(blink::NGLayoutInputNode, blink::NGBreakToken*, blink::NGPreviousInflowPosition*, scoped_refptr<blink::NGBreakToken>*) + 680 10 libblink_core.dylib 0x0000000136fe5b17 blink::NGBlockLayoutAlgorithm::Layout() + 3991 11 libblink_core.dylib 0x0000000136ff4c14 blink::(anonymous namespace)::LayoutWithAlgorithm(blink::NGBlockNode, blink::NGConstraintSpace const&, blink::NGBreakToken*, void*) + 692 12 libblink_core.dylib 0x0000000136ff3b53 blink::NGBlockNode::Layout(blink::NGConstraintSpace const&, blink::NGBreakToken*) + 1011 13 libblink_core.dylib 0x0000000136fcd11f blink::LayoutNGBlockFlow::UpdateBlockLayout(bool) + 383 14 libblink_core.dylib 0x0000000136cfd711 blink::LayoutBlock::UpdateLayout() + 385 15 libblink_core.dylib 0x0000000136ccc086 blink::LayoutObject::LayoutIfNeeded() + 54 16 libblink_core.dylib 0x0000000136dce9ca blink::LayoutFlexibleBox::LayoutLineItems(blink::FlexLine*, bool, blink::SubtreeLayoutScope&) + 858 17 libblink_core.dylib 0x0000000136dc99a2 blink::LayoutFlexibleBox::LayoutFlexItems(bool, blink::SubtreeLayoutScope&) + 1298 18 libblink_core.dylib 0x0000000136dc8fc7 blink::LayoutFlexibleBox::UpdateBlockLayout(bool) + 775 19 libblink_core.dylib 0x0000000136cfd711 blink::LayoutBlock::UpdateLayout() + 385 20 libblink_core.dylib 0x0000000136ccc086 blink::LayoutObject::LayoutIfNeeded() + 54 21 libblink_core.dylib 0x0000000136dce9ca blink::LayoutFlexibleBox::LayoutLineItems(blink::FlexLine*, bool, blink::SubtreeLayoutScope&) + 858 22 libblink_core.dylib 0x0000000136dc99a2 blink::LayoutFlexibleBox::LayoutFlexItems(bool, blink::SubtreeLayoutScope&) + 1298 23 libblink_core.dylib 0x0000000136dc8fc7 blink::LayoutFlexibleBox::UpdateBlockLayout(bool) + 775 24 libblink_core.dylib 0x0000000136cfd711 blink::LayoutBlock::UpdateLayout() + 385 25 libblink_core.dylib 0x0000000136e4b602 blink::LayoutObject::ForceLayout() + 66 26 libblink_core.dylib 0x0000000136ff4295 blink::NGBlockNode::RunOldLayout(blink::NGConstraintSpace const&) + 1333 27 libblink_core.dylib 0x0000000136ff37d7 blink::NGBlockNode::Layout(blink::NGConstraintSpace const&, blink::NGBreakToken*) + 119 28 libblink_core.dylib 0x000000013701991b blink::NGLayoutInputNode::Layout(blink::NGConstraintSpace const&, blink::NGBreakToken*) + 123 29 libblink_core.dylib 0x0000000136fed6e7 blink::NGBlockLayoutAlgorithm::LayoutNewFormattingContext(blink::NGLayoutInputNode, blink::NGBreakToken*, blink::NGInflowChildData const&, blink::NGBfcOffset, bool) + 1959 30 libblink_core.dylib 0x0000000136fe8209 blink::NGBlockLayoutAlgorithm::HandleNewFormattingContext(blink::NGLayoutInputNode, blink::NGBreakToken*, blink::NGPreviousInflowPosition*, scoped_refptr<blink::NGBreakToken>*) + 2393 31 libblink_core.dylib 0x0000000136fe5ac1 blink::NGBlockLayoutAlgorithm::Layout() + 3905 32 libblink_core.dylib 0x0000000136ff4c14 blink::(anonymous namespace)::LayoutWithAlgorithm(blink::NGBlockNode, blink::NGConstraintSpace const&, blink::NGBreakToken*, void*) + 692 33 libblink_core.dylib 0x0000000136ff3b53 blink::NGBlockNode::Layout(blink::NGConstraintSpace const&, blink::NGBreakToken*) + 1011 34 libblink_core.dylib 0x0000000137025760 blink::NGOutOfFlowLayoutPart::GenerateFragment(blink::NGBlockNode, blink::NGOutOfFlowLayoutPart::ContainingBlockInfo const&, base::Optional<blink::LayoutUnit> const&, blink::NGAbsolutePhysicalPosition const&) + 672 35 libblink_core.dylib 0x0000000137024b57 blink::NGOutOfFlowLayoutPart::LayoutDescendant(blink::NGOutOfFlowPositionedDescendant const&, blink::NGLogicalOffset*) + 2151 36 libblink_core.dylib 0x0000000137022ef4 blink::NGOutOfFlowLayoutPart::Run(blink::LayoutBox*) + 340 37 libblink_core.dylib 0x0000000136fcdc86 blink::LayoutNGBlockFlow::UpdateOutOfFlowBlockLayout() + 2166 38 libblink_core.dylib 0x0000000136fcd0c0 blink::LayoutNGBlockFlow::UpdateBlockLayout(bool) + 288 39 libblink_core.dylib 0x0000000136cfd711 blink::LayoutBlock::UpdateLayout() + 385 40 libblink_core.dylib 0x0000000136ccc086 blink::LayoutObject::LayoutIfNeeded() + 54 41 libblink_core.dylib 0x0000000136cffbbb blink::LayoutBlock::LayoutPositionedObject(blink::LayoutBox*, bool, blink::LayoutBlock::PositionedLayoutBehavior) + 683 42 libblink_core.dylib 0x0000000136cff8d0 blink::LayoutBlock::LayoutPositionedObjects(bool, blink::LayoutBlock::PositionedLayoutBehavior) + 192 43 libblink_core.dylib 0x0000000136d1c92f blink::LayoutBlockFlow::UpdateBlockLayout(bool) + 1615 44 libblink_core.dylib 0x0000000136eed62c blink::LayoutView::UpdateBlockLayout(bool) + 636 45 libblink_core.dylib 0x0000000136cfd711 blink::LayoutBlock::UpdateLayout() + 385 46 libblink_core.dylib 0x0000000136eedeed blink::LayoutView::UpdateLayout() + 1981
,
Dec 10
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/64698710a10ab64143343f74616cdfffdbfbcd90 commit 64698710a10ab64143343f74616cdfffdbfbcd90 Author: Xiaocheng Hu <xiaochengh@chromium.org> Date: Mon Dec 10 23:10:08 2018 [LayoutNG] Don't reuse inline items if they collapse a previous segment break In some cases, a text node may run segment break rules and completely remove a preceding run of collapsible whitespaces and segment breaks. This patch ensures that segment break rules are still run in this case by stopping inline items from being reused. Bug: 879088 Change-Id: If4ae3d53bb777c28421851b3ff22bcbaf209cc86 Reviewed-on: https://chromium-review.googlesource.com/c/1370647 Reviewed-by: Emil A Eklund <eae@chromium.org> Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org> Cr-Commit-Position: refs/heads/master@{#615305} [modify] https://crrev.com/64698710a10ab64143343f74616cdfffdbfbcd90/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.cc [modify] https://crrev.com/64698710a10ab64143343f74616cdfffdbfbcd90/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc
,
Dec 10
|
||
►
Sign in to add a comment |
||
Comment 1 by xiaoche...@chromium.org
, Dec 10Status: Assigned (was: Available)