New issue
Advanced search Search tips

Issue 609757 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2016
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 487937



Sign in to add a comment

Assertion failure on videojs.com

Project Member Reported by skyos...@chromium.org, May 6 2016

Issue description

Seen on a Galaxy S4:

W/WebKit  ( 8884): ASSERTION FAILED: !needsLayout()
W/WebKit  ( 8884): ../../third_party/WebKit/Source/core/layout/LayoutObject.h(324) : void blink::LayoutObject::assertLaidOut() const

This may be rendering pipeline throttling related.
 
Blocking: 487937
Status: Started (was: Assigned)
Confirmed that disabling rendering pipeline throttling makes this go away.

Found two issues:

1. ScrollingCoordinator tries to project touch handler rects inside throttled layers, which don't necessarily have up-to-date compositing data.
Candidate fix: https://codereview.chromium.org/1956873002

2. CompositedLayerMapping only skips painting layers that *are* throttled FrameViews, not layers that are *inside* throttled FrameViews.
Candidate fix: https://codereview.chromium.org/1954093003

Will still need to figure out how to test these. These might be related to issue 609758 too.
Project Member

Comment 3 by bugdroid1@chromium.org, May 10 2016

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

commit a14b445bcd0d0cfaf86e57966a611a1c2d592c0e
Author: skyostil <skyostil@chromium.org>
Date: Tue May 10 11:10:14 2016

ScrollingCoordinator: Don't project touch handler rectangles into throttled layers

When projecting touch handler region rectangles into the layer tree,
ignore throttled subtrees since their compositing information may be
stale.

BUG= 609757 

Review-Url: https://codereview.chromium.org/1956873002
Cr-Commit-Position: refs/heads/master@{#392577}

[modify] https://crrev.com/a14b445bcd0d0cfaf86e57966a611a1c2d592c0e/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
[modify] https://crrev.com/a14b445bcd0d0cfaf86e57966a611a1c2d592c0e/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp

For posterity here's the stack trace for #2:

05-11 10:40:21.968 10654 10674 F libc    : Fatal signal 11 (SIGSEGV), code 1, fault addr 0xfbadbeef in tid 10674 (CrRendererMain)
05-11 10:40:22.033   513   513 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-11 10:40:22.033   513   513 F DEBUG   : Build fingerprint: 'google/angler/angler:6.0.1/MHC19Q/2705526:userdebug/dev-keys'
05-11 10:40:22.033   513   513 F DEBUG   : Revision: '0'
05-11 10:40:22.033   513   513 F DEBUG   : ABI: 'arm'
05-11 10:40:22.034   513   513 F DEBUG   : pid: 10654, tid: 10674, name: CrRendererMain  >>> com.google.android.apps.chrome:sandboxed_process0 <<<
05-11 10:40:22.034   513   513 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xfbadbeef
05-11 10:40:22.064   513   513 F DEBUG   :     r0 f39c4e98  r1 fffffffe  r2 00000000  r3 fbadbeef
05-11 10:40:22.064   513   513 F DEBUG   :     r4 4cc15564  r5 00000001  r6 000000e0  r7 f39c4ff0
05-11 10:40:22.064   513   513 F DEBUG   :     r8 00000000  r9 f39c4f9c  sl 4428aef0  fp f39c53b8
05-11 10:40:22.064   513   513 F DEBUG   :     ip dce919a0  sp f39c4f38  lr de654b9b  pc dbdc9a5c  cpsr 480f0030
05-11 10:40:22.074 10516 11162 W chromium: [WARNING:audio_sync_reader.cc(132)] AudioSyncReader::Read timed out, audio glitch count=1
05-11 10:40:22.074 10516 11081 W chromium: [WARNING:audio_sync_reader.cc(132)] AudioSyncReader::Read timed out, audio glitch count=1
05-11 10:40:22.091   513   513 F DEBUG   : 
05-11 10:40:22.091   513   513 F DEBUG   : backtrace:
05-11 10:40:22.091   513   513 F DEBUG   :     #00 pc 008c9a5c  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::PaintLayer::hasNonIsolatedDescendantWithBlendMode() const+39)
05-11 10:40:22.091   513   513 F DEBUG   :     #01 pc 008cd631  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::PaintLayerPainter::paintLayerContents(blink::GraphicsContext&, blink::PaintLayerPaintingInfo const&, unsigned int, blink::PaintLayerPainter::FragmentPolicy)+776)
05-11 10:40:22.091   513   513 F DEBUG   :     #02 pc 009c0313  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::CompositedLayerMapping::doPaintTask(blink::GraphicsLayerPaintInfo const&, blink::GraphicsLayer const&, unsigned int const&, blink::GraphicsContext&, blink::IntRect const&) const+390)
05-11 10:40:22.091   513   513 F DEBUG   :     #03 pc 009c38c7  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::CompositedLayerMapping::paintContents(blink::GraphicsLayer const*, blink::GraphicsContext&, unsigned int, blink::IntRect const&) const+438)
05-11 10:40:22.092   513   513 F DEBUG   :     #04 pc 0013b053  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_platform.cr.so (blink::GraphicsLayer::paintWithoutCommit(blink::IntRect const*, blink::GraphicsContext::DisabledMode)+298)
05-11 10:40:22.092   513   513 F DEBUG   :     #05 pc 0013b101  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_platform.cr.so (blink::GraphicsLayer::paint(blink::IntRect const*, blink::GraphicsContext::DisabledMode)+4)
05-11 10:40:22.092   513   513 F DEBUG   :     #06 pc 007c9d1d  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+20)
05-11 10:40:22.092   513   513 F DEBUG   :     #07 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.092   513   513 F DEBUG   :     #08 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.092   513   513 F DEBUG   :     #09 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.092   513   513 F DEBUG   :     #10 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.092   513   513 F DEBUG   :     #11 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.092   513   513 F DEBUG   :     #12 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.092   513   513 F DEBUG   :     #13 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.093   513   513 F DEBUG   :     #14 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.093   513   513 F DEBUG   :     #15 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.093   513   513 F DEBUG   :     #16 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.093   513   513 F DEBUG   :     #17 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.093   513   513 F DEBUG   :     #18 pc 007c9d65  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaintRecursively(blink::GraphicsLayer*)+92)
05-11 10:40:22.093   513   513 F DEBUG   :     #19 pc 007cb1bb  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::synchronizedPaint()+370)
05-11 10:40:22.093   513   513 F DEBUG   :     #20 pc 007d6061  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::FrameView::updateLifecyclePhasesInternal(blink::FrameView::LifeCycleUpdateOption)+464)
05-11 10:40:22.094   513   513 F DEBUG   :     #21 pc 0089653b  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_core.cr.so (blink::PageAnimator::updateAllLifecyclePhases(blink::LocalFrame&)+14)
05-11 10:40:22.094   513   513 F DEBUG   :     #22 pc 000dc897  /data/app/com.google.android.apps.chrome-2/lib/arm/libblink_web.cr.so (blink::WebViewImpl::updateAllLifecyclePhases()+154)
05-11 10:40:22.094   513   513 F DEBUG   :     #23 pc 00ade4b9  /data/app/com.google.android.apps.chrome-2/lib/arm/libcontent.cr.so (content::RenderWidgetCompositor::UpdateLayerTreeHost()+10)
05-11 10:40:22.094   513   513 F DEBUG   :     #24 pc 0013b555  /data/app/com.google.android.apps.chrome-2/lib/arm/libcc.cr.so (cc::ProxyMain::BeginMainFrame(std::__1::unique_ptr<cc::BeginMainFrameAndCommitState, std::__1::default_delete<cc::BeginMainFrameAndCommitState> >)+660)
05-11 10:40:22.094   513   513 F DEBUG   :     #25 pc 00145939  /data/app/com.google.android.apps.chrome-2/lib/arm/libcc.cr.so
05-11 10:40:22.094   513   513 F DEBUG   :     #26 pc 00071405  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask const&)+292)
05-11 10:40:22.095   513   513 F DEBUG   :     #27 pc 0001b5f3  /data/app/com.google.android.apps.chrome-2/lib/arm/libscheduler.cr.so (scheduler::TaskQueueManager::ProcessTaskFromWorkQueue(scheduler::internal::WorkQueue*, scheduler::internal::TaskQueueImpl::Task*)+626)
05-11 10:40:22.095   513   513 F DEBUG   :     #28 pc 0001b8e9  /data/app/com.google.android.apps.chrome-2/lib/arm/libscheduler.cr.so (scheduler::TaskQueueManager::DoWork(base::TimeTicks, bool)+452)
05-11 10:40:22.095   513   513 F DEBUG   :     #29 pc 0001a193  /data/app/com.google.android.apps.chrome-2/lib/arm/libscheduler.cr.so
05-11 10:40:22.095   513   513 F DEBUG   :     #30 pc 00071405  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask const&)+292)
05-11 10:40:22.095   513   513 F DEBUG   :     #31 pc 00086921  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::MessageLoop::RunTask(base::PendingTask const&)+360)
05-11 10:40:22.095   513   513 F DEBUG   :     #32 pc 00086f2f  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::MessageLoop::DeferOrRunPendingTask(base::PendingTask const&)+26)
05-11 10:40:22.095   513   513 F DEBUG   :     #33 pc 0008729d  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::MessageLoop::DoDelayedWork(base::TimeTicks*)+204)
05-11 10:40:22.095   513   513 F DEBUG   :     #34 pc 000890b5  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::MessagePumpDefault::Run(base::MessagePump::Delegate*)+108)
05-11 10:40:22.095   513   513 F DEBUG   :     #35 pc 000881eb  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::MessageLoop::RunHandler()+78)
05-11 10:40:22.095   513   513 F DEBUG   :     #36 pc 0009e7a1  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::RunLoop::Run()+28)
05-11 10:40:22.096   513   513 F DEBUG   :     #37 pc 000865a9  /data/app/com.google.android.apps.chrome-2/lib/arm/libbase.cr.so (base::MessageLoop::Run()+64)
05-11 10:40:22.096   513   513 F DEBUG   :     #38 pc 00b46e53  /data/app/com.google.android.apps.chrome-2/lib/arm/libcontent.cr.so
05-11 10:40:22.096   513   513 F DEBUG   :     #39 pc 00bca7bf  /data/app/com.google.android.apps.chrome-2/lib/arm/libcontent.cr.so
05-11 10:40:22.096   513   513 F DEBUG   :     #40 pc 00bcaa3f  /data/app/com.google.android.apps.chrome-2/lib/arm/libcontent.cr.so
05-11 10:40:22.096   513   513 F DEBUG   :     #41 pc 00bca175  /data/app/com.google.android.apps.chrome-2/lib/arm/libcontent.cr.so (Java_org_chromium_content_app_ContentMain_nativeStart+228)
05-11 10:40:22.096   513   513 F DEBUG   :     #42 pc 01239add  /data/app/com.google.android.apps.chrome-2/oat/arm/base.odex (offset 0xcce000) (int org.chromium.content.app.ContentMain.nativeStart()+72)
05-11 10:40:22.096   513   513 F DEBUG   :     #43 pc 01239b5d  /data/app/com.google.android.apps.chrome-2/oat/arm/base.odex (offset 0xcce000) (int org.chromium.content.app.ContentMain.start()+48)
05-11 10:40:22.096   513   513 F DEBUG   :     #44 pc 01235e99  /data/app/com.google.android.apps.chrome-2/oat/arm/base.odex (offset 0xcce000) (void org.chromium.content.app.ChildProcessService$2.run()+4716)
05-11 10:40:22.096   513   513 F DEBUG   :     #45 pc 71bf68d1  /data/dalvik-cache/arm/system@framework@boot.oat (offset 0x1ece000)

Project Member

Comment 5 by bugdroid1@chromium.org, May 11 2016

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

commit 8d0f39db6e6aa60e17c38e2ed7ace717baceef86
Author: skyostil <skyostil@chromium.org>
Date: Wed May 11 23:38:40 2016

Don't try to paint graphics layers inside throttled frames

Previously painting was skipped for PaintLayers that correspond to
throttled FrameViews. This could still result in the painting of
child PaintLayers that are not FrameViews but still reside in a
throttled FrameView.

This patch amends the paint suppression logic to skip all layers whose
containing view is throttled. We also avoid requiring a clean layout for
such layers since throttling means the layout can be out of date.

BUG= 609757 

Review-Url: https://codereview.chromium.org/1954093003
Cr-Commit-Position: refs/heads/master@{#393106}

[modify] https://crrev.com/8d0f39db6e6aa60e17c38e2ed7ace717baceef86/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/8d0f39db6e6aa60e17c38e2ed7ace717baceef86/third_party/WebKit/Source/core/paint/FramePainter.cpp
[modify] https://crrev.com/8d0f39db6e6aa60e17c38e2ed7ace717baceef86/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp
[modify] https://crrev.com/8d0f39db6e6aa60e17c38e2ed7ace717baceef86/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp

Status: Fixed (was: Started)
Note to self: this fix went into 52.0.2734.0.
Looks like the fix brought the crash levels down to pre-throttling levels:

https://fracas.googleplex.com/workspace/d49e0a28-44a0-45e5-883e-ccb4332027a7

Sign in to add a comment