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

Issue 766842 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug



Sign in to add a comment

!IsSetNeedsLayoutForbidden() check fails when editing contenteditable element using Swype keyboard on Android

Project Member Reported by rlanday@chromium.org, Sep 19 2017

Issue description

Chrome Version: 63.0.3214.0
OS: Android

What steps will reproduce the problem?
(1) Find/configure an Android device with the Swype keyboard installed (trial is OK). Note: Swype seems to crash on Android O for unrelated reasons, I suggest using Android N.
(2) Download the attached HTML file to the device (e.g. "adb push ~/sample.html /sdcard/sample.html")
(3) Load the HTML file in a recent DCHECK-enabled Chrome build (navigate to file:///sdcard/sample.html)
(4) Long press somewhere on the page and hit "Select All"
(5) Using the Swype on-screen keyboard (NOT Gboard or a Bluetooth keyboard, the problem will not occur), type a letter (NOT a number or punctuation, the problem will not occur).

In a DCHECK-enabled build, the renderer will crash with the following stack trace:

[FATAL:LayoutObject.h(2620)] Check failed: !IsSetNeedsLayoutForbidden().

Stack Trace:
  RELADDR   FUNCTION                                                                                                                                FILE:LINE
  000a65bb  ~LogMessage                                                                                                                             /usr/local/google/code/clankium/src/base/logging.cc:560
  006d8d3f  blink::LayoutObject::SetNeedsLayout(char const*, blink::MarkingBehavior, blink::SubtreeLayoutScope*)                                    /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutObject.h:2620
  007f7dd3  blink::LayoutObject::SetNeedsLayoutAndFullPaintInvalidation(char const*, blink::MarkingBehavior, blink::SubtreeLayoutScope*)            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutObject.h:2639
  00a2fbc7  blink::TextAutosizer::ApplyMultiplier(blink::LayoutObject*, float, blink::SubtreeLayoutScope*, blink::TextAutosizer::RelayoutBehavior)  /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TextAutosizer.cpp:1139
  00a2f757  blink::TextAutosizer::Inflate(blink::LayoutObject*, blink::SubtreeLayoutScope*, blink::TextAutosizer::InflateBehavior, float)           /data/app/org.chromium.chrome-1/lib/arm/libblink_core.cr.so
  00a2f5b3  blink::TextAutosizer::BeginLayout(blink::LayoutBlock*, blink::SubtreeLayoutScope*)                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TextAutosizer.cpp:353
  00a30bf1  LayoutScope                                                                                                                             /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TextAutosizer.cpp:1300
  00a30c1d  TableLayoutScope                                                                                                                        /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TextAutosizer.cpp:1311
  00a2bfc3  blink::TableLayoutAlgorithmAuto::ComputeIntrinsicLogicalWidths(blink::LayoutUnit&, blink::LayoutUnit&)                                  /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TableLayoutAlgorithmAuto.cpp:259
  00a0f003  blink::LayoutTable::ComputePreferredLogicalWidths()                                                                                     /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutTable.cpp:988
  009d375f  blink::LayoutBox::MinPreferredLogicalWidth() const                                                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBox.cpp:1348
  009bea29  blink::LayoutBlock::ComputeChildPreferredLogicalWidths(blink::LayoutObject&, blink::LayoutUnit&, blink::LayoutUnit&) const              /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlock.cpp:1571
  009be347  blink::LayoutBlock::ComputeBlockPreferredLogicalWidths(blink::LayoutUnit&, blink::LayoutUnit&) const                                    /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlock.cpp:1491
  009be0f5  blink::LayoutBlock::ComputeIntrinsicLogicalWidths(blink::LayoutUnit&, blink::LayoutUnit&) const                                         /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlock.cpp:1350
  009be6e1  blink::LayoutBlock::ComputePreferredLogicalWidths()                                                                                     /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlock.cpp:1390
  00a1162f  blink::LayoutTableCell::ComputePreferredLogicalWidths()                                                                                 /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp:194
  009d37bf  blink::LayoutBox::MaxPreferredLogicalWidth() const                                                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBox.cpp:1362
  00a2b9a1  blink::TableLayoutAlgorithmAuto::RecalcColumn(unsigned int)                                                                             /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TableLayoutAlgorithmAuto.cpp:67
  00a2bf2b  blink::TableLayoutAlgorithmAuto::FullRecalc()                                                                                           /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TableLayoutAlgorithmAuto.cpp:206
  00a2bfc9  blink::TableLayoutAlgorithmAuto::ComputeIntrinsicLogicalWidths(blink::LayoutUnit&, blink::LayoutUnit&)                                  /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/TableLayoutAlgorithmAuto.cpp:261
  00a0f003  blink::LayoutTable::ComputePreferredLogicalWidths()                                                                                     /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutTable.cpp:988
  009d375f  blink::LayoutBox::MinPreferredLogicalWidth() const                                                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBox.cpp:1348
  00a0d8a3  blink::LayoutTable::UpdateLogicalWidth()                                                                                                /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutTable.cpp:348
  00a0e219  blink::LayoutTable::UpdateLayout()                                                                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutTable.cpp:604
  009c3b87  blink::LayoutBlockFlow::PositionAndLayoutOnceIfNeeded(blink::LayoutBox&, blink::LayoutUnit, blink::BlockChildrenLayoutInfo&)            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:759
  009c3d5f  blink::LayoutBlockFlow::LayoutBlockChild(blink::LayoutBox&, blink::BlockChildrenLayoutInfo&)                                            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:822
  009c356d  blink::LayoutBlockFlow::LayoutBlockChildren(bool, blink::SubtreeLayoutScope&, blink::LayoutUnit, blink::LayoutUnit)                     /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:1527
  009c2a73  blink::LayoutBlockFlow::LayoutChildren(bool, blink::SubtreeLayoutScope&)                                                                /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:567
  009c2889  blink::LayoutBlockFlow::UpdateBlockLayout(bool)                                                                                         /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:438
  009bc595  blink::LayoutBlock::UpdateLayout()                                                                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlock.cpp:427
  009c3b87  blink::LayoutBlockFlow::PositionAndLayoutOnceIfNeeded(blink::LayoutBox&, blink::LayoutUnit, blink::BlockChildrenLayoutInfo&)            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:759
  009c3d5f  blink::LayoutBlockFlow::LayoutBlockChild(blink::LayoutBox&, blink::BlockChildrenLayoutInfo&)                                            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:822
  009c356d  blink::LayoutBlockFlow::LayoutBlockChildren(bool, blink::SubtreeLayoutScope&, blink::LayoutUnit, blink::LayoutUnit)                     /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:1527
  009c2a73  blink::LayoutBlockFlow::LayoutChildren(bool, blink::SubtreeLayoutScope&)                                                                /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:567
  009c2889  blink::LayoutBlockFlow::UpdateBlockLayout(bool)                                                                                         /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:438
  009bc595  blink::LayoutBlock::UpdateLayout()                                                                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlock.cpp:427
  009c3b87  blink::LayoutBlockFlow::PositionAndLayoutOnceIfNeeded(blink::LayoutBox&, blink::LayoutUnit, blink::BlockChildrenLayoutInfo&)            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:759
  009c3d5f  blink::LayoutBlockFlow::LayoutBlockChild(blink::LayoutBox&, blink::BlockChildrenLayoutInfo&)                                            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:822
  009c356d  blink::LayoutBlockFlow::LayoutBlockChildren(bool, blink::SubtreeLayoutScope&, blink::LayoutUnit, blink::LayoutUnit)                     /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:1527
  009c2a73  blink::LayoutBlockFlow::LayoutChildren(bool, blink::SubtreeLayoutScope&)                                                                /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:567
  009c2889  blink::LayoutBlockFlow::UpdateBlockLayout(bool)                                                                                         /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:438
  009bc595  blink::LayoutBlock::UpdateLayout()                                                                                                      /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlock.cpp:427
  009c3b87  blink::LayoutBlockFlow::PositionAndLayoutOnceIfNeeded(blink::LayoutBox&, blink::LayoutUnit, blink::BlockChildrenLayoutInfo&)            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:759
  009c3d5f  blink::LayoutBlockFlow::LayoutBlockChild(blink::LayoutBox&, blink::BlockChildrenLayoutInfo&)                                            /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:822
  009c356d  blink::LayoutBlockFlow::LayoutBlockChildren(bool, blink::SubtreeLayoutScope&, blink::LayoutUnit, blink::LayoutUnit)                     /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:1527
  009c2a73  blink::LayoutBlockFlow::LayoutChildren(bool, blink::SubtreeLayoutScope&)                                                                /usr/local/google/code/clankium/src/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp:567

Note: this test case was originally submitted for an editing bug in  crbug.com/766680 . It's possible the issues might be related.
 
sample.html
2.0 KB View Download
pdr@, I'm passing this your way since it appears to be related to TextAutosizer. Sorry the repro steps are kind of annoying.
Cc: rlanday@chromium.org
Status: WontFix (was: Assigned)
Seems to no longer repro after https://chromium-review.googlesource.com/c/chromium/src/+/676264

Sign in to add a comment