Can hit this reliably in https://play.google.com/store/apps/details?id=de.sueddeutsche
Go to Demoversion, and open a sample magazine.
Two things seem bad here:
1) the fallback tick requires an expensive image decode. We should really short circuit that.
2) It seems (If I'm reading this right) like when webview does a software draw, it goes through a path that ends up doing a GPU image decode without the context being locked. I don't know where it was expected that the lock should have been obtained though.
0x0225d1d5: DebugBreak at /usr/local/google/code/clankium/src/out/gn-release/../../base/debug/debugger_posix.cc:219
(inlined by) base::debug::BreakDebugger() at /usr/local/google/code/clankium/src/out/gn-release/../../base/debug/debugger_posix.cc:249
0x02269aef: logging::LogMessage::~LogMessage() at /usr/local/google/code/clankium/src/out/gn-release/../../base/logging.cc:740
0x0228ead9: base::Lock::AssertAcquired() const at /usr/local/google/code/clankium/src/out/gn-release/../../base/synchronization/lock.cc:23 (discriminator 11)
0x00333229: cc::GpuImageDecodeController::GetDecodedImageForDraw(cc::DrawImage const&) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/tiles/gpu_image_decode_controller.cc:282 (discriminator 1)
0x00309387: ScopedDecodedImageLock at /usr/local/google/code/clankium/src/out/gn-release/../../cc/playback/image_hijack_canvas.cc:33 (discriminator 9)
0x0030972f: cc::ImageHijackCanvas::onDrawImageRect(SkImage const*, SkRect const*, SkRect const&, SkPaint const*, SkCanvas::SrcRectConstraint) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/playback/image_hijack_canvas.cc:128 (discriminator 1)
0x003b5a4f: SkCanvas::legacy_drawImageRect(SkImage const*, SkRect const*, SkRect const&, SkPaint const*, SkCanvas::SrcRectConstraint) at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkCanvas.cpp:2023
0x004495b7: void SkRecords::Draw::draw<SkRecords::DrawImageRect>(SkRecords::DrawImageRect const&) at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkRecordDraw.cpp:102 (discriminator 3)
0x0044a839: void SkRecords::Draw::operator()<SkRecords::DrawImageRect>(SkRecords::DrawImageRect const&) at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkRecordDraw.h:62
(inlined by) decltype ({parm#1}((SkRecords::NoOp)())) SkRecord::Record::visit<SkRecords::Draw&>(SkRecords::Draw&) const at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkRecord.h:170
(inlined by) decltype ({parm#2}((SkRecords::NoOp)())) SkRecord::visit<SkRecords::Draw&>(int, SkRecords::Draw&) const at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkRecord.h:51
(inlined by) SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkRecordDraw.cpp:43
0x003953ff: SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkBigPicture.cpp:43 (discriminator 7)
0x003b66c9: SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkCanvas.cpp:2971
0x003b7611: SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/src/core/SkCanvas.cpp:2942
0x00307113: SkCanvas::drawPicture(SkPicture const*) at /usr/local/google/code/clankium/src/out/gn-release/../../third_party/skia/include/core/SkCanvas.h:1007
(inlined by) cc::DisplayItemList::Raster(SkCanvas*, SkPicture::AbortCallback*, gfx::Rect const&, float) const at /usr/local/google/code/clankium/src/out/gn-release/../../cc/playback/display_item_list.cc:142
0x00309ec9: cc::RasterSource::RasterCommon(SkCanvas*, SkPicture::AbortCallback*, gfx::Rect const&, gfx::Rect const&, float) const at /usr/local/google/code/clankium/src/out/gn-release/../../cc/playback/raster_source.cc:205 (discriminator 1)
0x0030a133: cc::RasterSource::PlaybackToCanvas(SkCanvas*, gfx::Rect const&, gfx::Rect const&, float, cc::RasterSource::PlaybackSettings const&) const at /usr/local/google/code/clankium/src/out/gn-release/../../cc/playback/raster_source.cc:93
0x00301921: cc::SoftwareRenderer::DrawPictureQuad(cc::DirectRenderer::DrawingFrame const*, cc::PictureDrawQuad const*) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/output/software_renderer.cc:387
0x0030317f: cc::SoftwareRenderer::DoDrawQuad(cc::DirectRenderer::DrawingFrame*, cc::DrawQuad const*, gfx::QuadF const*) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/output/software_renderer.cc:300 (discriminator 1)
0x002e3787: cc::DirectRenderer::DrawRenderPass(cc::DirectRenderer::DrawingFrame*, cc::RenderPass const*) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/output/direct_renderer.cc:515
0x002e3955: cc::DirectRenderer::DrawRenderPassAndExecuteCopyRequests(cc::DirectRenderer::DrawingFrame*, cc::RenderPass*) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/output/direct_renderer.cc:413
0x002e3bfb: cc::DirectRenderer::DrawFrame(std::__1::vector<std::__1::unique_ptr<cc::RenderPass, std::__1::default_delete<cc::RenderPass> >, std::__1::allocator<std::__1::unique_ptr<cc::RenderPass, std::__1::default_delete<cc::RenderPass> > > >*, float, gfx::Rect const&, gfx::Rect const&, bool) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/output/direct_renderer.cc:272
0x0035d465: cc::LayerTreeHostImpl::DrawLayers(cc::LayerTreeHostImpl::FrameData*) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/trees/layer_tree_host_impl.cc:1678 (discriminator 4)
0x00375239: cc::ProxyImpl::DrawAndSwapInternal(bool) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/trees/proxy_impl.cc:640 (discriminator 1)
0x003752f3: cc::ProxyImpl::ScheduledActionDrawAndSwapIfPossible() at /usr/local/google/code/clankium/src/out/gn-release/../../cc/trees/proxy_impl.cc:526
0x0032b223: cc::Scheduler::DrawAndSwapIfPossible() at /usr/local/google/code/clankium/src/out/gn-release/../../cc/scheduler/scheduler.cc:618
0x0032c2fb: cc::Scheduler::ProcessScheduledActions() at /usr/local/google/code/clankium/src/out/gn-release/../../cc/scheduler/scheduler.cc:698
0x0032d77b: cc::Scheduler::OnDrawForOutputSurface(bool) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/scheduler/scheduler.cc:339
0x00373263: cc::ProxyImpl::OnDrawForOutputSurface(bool) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/trees/proxy_impl.cc:476 (discriminator 1)
0x00356d0b: cc::LayerTreeHostImpl::OnDraw(gfx::Transform const&, gfx::Rect const&, gfx::Rect const&, bool) at /usr/local/google/code/clankium/src/out/gn-release/../../cc/trees/layer_tree_host_impl.cc:1551
0x0210823b: content::SynchronousCompositorOutputSurface::InvokeComposite(gfx::Transform const&, gfx::Rect const&, gfx::Rect const&, bool) at /usr/local/google/code/clankium/src/out/gn-release/../../content/renderer/android/synchronous_compositor_output_surface.cc:249
0x021087cb: content::SynchronousCompositorOutputSurface::DemandDrawSw(SkCanvas*) at /usr/local/google/code/clankium/src/out/gn-release/../../content/renderer/android/synchronous_compositor_output_surface.cc:238
0x02108ea5: content::SynchronousCompositorOutputSurface::FallbackTickFired() at /usr/local/google/code/clankium/src/out/gn-release/../../content/renderer/android/synchronous_compositor_output_surface.cc:182
0x0028812d: void base::internal::RunnableAdapter<void (base::CancelableCallback<void ()>::*)() const>::Run<base::CancelableCallback<void ()>*>(base::CancelableCallback<void ()>*&&) at /usr/local/google/code/clankium/src/out/gn-release/../../base/bind_internal.h:211 (discriminator 4)
(inlined by) void base::internal::InvokeHelper<true, void, base::internal::RunnableAdapter<void (base::CancelableCallback<void ()>::*)() const> >::MakeItSo<base::WeakPtr<base::CancelableCallback<void ()> >>(base::internal::RunnableAdapter<void (base::CancelableCallback<void ()>::*)() const>, base::WeakPtr<base::CancelableCallback<void ()> >) at /usr/local/google/code/clankium/src/out/gn-release/../../base/bind_internal.h:324 (discriminator 4)
(inlined by) base::internal::Invoker<base::IndexSequence<0u>, base::internal::BindState<base::internal::RunnableAdapter<void (base::CancelableCallback<void ()>::*)() const>, void (base::CancelableCallback<void ()> const*), base::WeakPtr<base::CancelableCallback<void ()> > >, base::internal::InvokeHelper<true, void, base::internal::RunnableAdapter<void (base::CancelableCallback<void ()>::*)() const> >, void ()>::Run(base::internal::BindStateBase*) at /usr/local/google/code/clankium/src/out/gn-release/../../base/bind_internal.h:364 (discriminator 4)
0x0225d5b1: base::Callback<void (), (base::internal::CopyMode)1>::Run() const at /usr/local/google/code/clankium/src/out/gn-release/../../base/callback.h:397 (discriminator 1)
(inlined by) base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask const&) at /usr/local/google/code/clankium/src/out/gn-release/../../base/debug/task_annotator.cc:51 (discriminator 1)
0x0226f6e3: base::MessageLoop::RunTask(base::PendingTask const&) at /usr/local/google/code/clankium/src/out/gn-release/../../base/message_loop/message_loop.cc:478
0x0226f9db: base::MessageLoop::DeferOrRunPendingTask(base::PendingTask const&) at /usr/local/google/code/clankium/src/out/gn-release/../../base/message_loop/message_loop.cc:487
0x022700d3: base::MessageLoop::DoDelayedWork(base::TimeTicks*) at /usr/local/google/code/clankium/src/out/gn-release/../../base/message_loop/message_loop.cc:642
0x02271c03: base::MessagePumpDefault::Run(base::MessagePump::Delegate*) at /usr/local/google/code/clankium/src/out/gn-release/../../base/message_loop/message_pump_default.cc:37
0x02270ca1: base::MessageLoop::RunHandler() at /usr/local/google/code/clankium/src/out/gn-release/../../base/message_loop/message_loop.cc:442 (discriminator 1)
Comment 1 by sgu...@chromium.org
, May 25 2016