New issue
Advanced search Search tips

Issue 854194 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner: ----
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 3
Type: Bug

Blocking:
issue 836886



Sign in to add a comment

[BlinkGenPropertyTrees] fast/multicol/short-columns-insane-unbreakable-content-height-crash.html crashes

Project Member Reported by pdr@chromium.org, Jun 19 2018

Issue description

This test crashes with blink gen property trees:

third_party/blink/tools/run_web_tests.py --debug --additional-driver-flag=--enable-blink-gen-property-trees fast/multicol/short-columns-insane-unbreakable-content-height-crash.html

STDERR: [1:1:0618/154024.862388:FATAL:paint_artifact_compositor.cc(128)] Check failed: layer->bounds() == static_cast<gfx::Size>(foreign_layer_display_item.Bounds()). 
STDERR:   layer bounds: 3917x33553179
STDERR:   display item bounds: "3917x33553180"
STDERR: #0 0x000003ac1a5c base::debug::StackTrace::StackTrace()
STDERR: #1 0x000003a3c1eb logging::LogMessage::~LogMessage()
STDERR: #2 0x000005b70296 blink::PaintArtifactCompositor::CompositedLayerForPendingLayer()
STDERR: #3 0x000005b71eec blink::PaintArtifactCompositor::Update()
STDERR: #4 0x000005b5ab97 blink::LocalFrameView::PushPaintArtifactToCompositor()
STDERR: #5 0x000005b57870 blink::LocalFrameView::UpdateLifecyclePhasesInternal()
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/176b7c068f243442799fa6c32ca993f4b811f4bf

commit 176b7c068f243442799fa6c32ca993f4b811f4bf
Author: Philip Rogers <pdr@chromium.org>
Date: Thu Jun 21 01:17:31 2018

[BlinkGenPropertyTrees] Make lossy IntSize to DoubleSize explicit

This is rather surprising:
  IntSize(1, 33553177) != RoundedIntSize(IntSize(1, 33553177))
This is because we use RoundedIntSize(const DoubleSize&) due to the implicit
DoubleSize(const IntSize&) constructor, which rounds the size to 1x33553176
because doubles do not have perfect precision.

This removes a RoundedIntSize from CollectDrawableLayersForLayerListRecursively
which incorrectly resulted in rounding the layer bounds. This patch also makes
the DoubleSize(const IntSize&) constructor explicit to prevent this mistake in
the future, because the conversion is lossy. The corresponding FloatSize
constructor is already explicit.

Bug:  854194 
Cq-Include-Trybots: luci.chromium.try:linux-blink-gen-property-trees;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I71ecc68eeaa39e602ba7e415222eafea2e706047
Reviewed-on: https://chromium-review.googlesource.com/1107203
Commit-Queue: Philip Rogers <pdr@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569121}
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/core/frame/local_frame_view.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/core/frame/root_frame_viewport_test.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/core/frame/visual_viewport_test.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/core/inspector/inspector_layer_tree_agent.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/core/page/page_overlay.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping_test.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/platform/geometry/double_size.h
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/platform/graphics/graphics_layer.cc
[modify] https://crrev.com/176b7c068f243442799fa6c32ca993f4b811f4bf/third_party/blink/renderer/platform/scroll/scroll_animator_test.cc

Comment 2 by pdr@chromium.org, Jun 21 2018

Status: Fixed (was: Available)
Project Member

Comment 3 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/674a5bcbf9ecbeb9155c7056ff1e4bf510357e4c

commit 674a5bcbf9ecbeb9155c7056ff1e4bf510357e4c
Author: Philip Rogers <pdr@chromium.org>
Date: Thu Jun 21 23:21:05 2018

DoubleSize should use round/ceil instead of roundf/ceilf

In [1] a bug was fixed where passing an integer through
DoubleSize::RoundedIntRect would lose precision. This bug actually
shouldn't happen because doubles can perfectly represent integers.
The issue is that DoubleSize was incorrectly using roundf/ceilf
which are the float versions [2].

[1] https://crrev.com/569121
[2] http://en.cppreference.com/w/c/numeric/math/round

Bug:  854194 
Change-Id: I1e51a03ab3fd9037ae0dd40f1f6788ffa2ad4811
Cq-Include-Trybots: luci.chromium.try:linux-blink-gen-property-trees
Reviewed-on: https://chromium-review.googlesource.com/1110552
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Tien-Ren Chen <trchen@chromium.org>
Commit-Queue: Tien-Ren Chen <trchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569440}
[modify] https://crrev.com/674a5bcbf9ecbeb9155c7056ff1e4bf510357e4c/third_party/blink/renderer/platform/geometry/double_size.h

Sign in to add a comment