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

Issue 591174 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Bug



Sign in to add a comment

Blink crash on PluginPowerSaver for fixed-position plugin within iframe

Project Member Reported by tommycli@chromium.org, Mar 1 2016

Issue description

1. Use tip of tree and then 'git revert c916fccc772dce7924d8cf1266ba4e71344c37c3'. This will restore the PPS patch that was reverted.
2. Run Chrome with Flash. use the --ppapi-flash-path flag.
3. Visit http://pps-test-a.appspot.com/repro_545039.html.
4. Scroll down using mouse wheel or arrow keys.
5. Observe above crash.

repro_545039.html contains:
<iframe src="repro_545039_iframe.html"></iframe>
(a bunch of filler to enable scrolling)

repro_545039_iframe.html contains:
<div style="position:fixed;">
  <object data="http://pps-test-b.appspot.com/flash.swf"></object>
</div>

The key part is the position: fixed. Without it, or without the iframe, the crash doesn't happen.

If this is any clue, when I add a printf statement to LoadablePluginPlaceholder::OnUnobscuredRectUpdate, I receive:

OnUnobscuredRectUpdate: 0,0 292x142
OnUnobscuredRectUpdate: 0,0 292x142
OnUnobscuredRectUpdate: 0,0 292x142
OnUnobscuredRectUpdate: 0,0 292x142
OnUnobscuredRectUpdate: 0,-2 292x142
Received signal 4 ILL_ILLOPN 7ff7c01b3d3b

The crash occurs when I get the negative number in the y axis.

 
Crash signature looks something like:

hread 0 CRASHED [EXC_BAD_INSTRUCTION / 0x00000001 @ 0x000000010667f90a ] MAGIC SIGNATURE THREAD
0x000000010667f90a	(Google Chrome Framework -FramePainter.cpp:95 )	blink::FramePainter::paintContents(blink::GraphicsContext*, unsigned int, blink::IntRect const&)
0x000000010667f0d5	(Google Chrome Framework -FramePainter.cpp:45 )	blink::FramePainter::paint(blink::GraphicsContext*, unsigned int, blink::IntRect const&)
0x000000010654647c	(Google Chrome Framework -FrameView.cpp:3742 )	blink::FrameView::paint(blink::GraphicsContext*, blink::IntRect const&) const
0x00000001066ae274	(Google Chrome Framework -PartPainter.cpp:118 )	blink::PartPainter::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&)
0x00000001067a9c74	(Google Chrome Framework -LayoutPart.cpp:248 )	blink::LayoutPart::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x00000001066adbd9	(Google Chrome Framework -PartPainter.cpp:82 )	blink::PartPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&)
0x00000001067a9c54	(Google Chrome Framework -LayoutPart.cpp:243 )	blink::LayoutPart::paint(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666f7c4	(Google Chrome Framework -BlockPainter.cpp:138 )	blink::BlockPainter::paintInlineBox(blink::InlineBox const&, blink::PaintInfo const&, blink::LayoutPoint const&)
0x00000001066840b8	(Google Chrome Framework -InlineFlowBoxPainter.cpp:56 )	blink::InlineFlowBoxPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&, blink::LayoutUnit, blink::LayoutUnit)
0x0000000106811cf4	(Google Chrome Framework -InlineFlowBox.cpp:1053 )	blink::InlineFlowBox::paint(blink::PaintInfo const&, blink::LayoutPoint const&, blink::LayoutUnit, blink::LayoutUnit) const
0x00000001066aeca4	(Google Chrome Framework -RootInlineBoxPainter.cpp:23 )	blink::RootInlineBoxPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&, blink::LayoutUnit, blink::LayoutUnit)
0x000000010681f0b4	(Google Chrome Framework -RootInlineBox.cpp:156 )	blink::RootInlineBox::paint(blink::PaintInfo const&, blink::LayoutPoint const&, blink::LayoutUnit, blink::LayoutUnit) const
0x000000010668a27d	(Google Chrome Framework -LineBoxListPainter.cpp:61 )	blink::LineBoxListPainter::paint(blink::LayoutBoxModelObject const&, blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666ff57	(Google Chrome Framework -BlockPainter.cpp:257 )	blink::BlockPainter::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&)
0x000000010666fb4e	(Google Chrome Framework -BlockPainter.cpp:200 )	blink::BlockPainter::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720db4	(Google Chrome Framework -LayoutBlock.cpp:1258 )	blink::LayoutBlock::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666eff6	(Google Chrome Framework -BlockPainter.cpp:56 )	blink::BlockPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720d74	(Google Chrome Framework -LayoutBlock.cpp:1248 )	blink::LayoutBlock::paint(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666f4ab	(Google Chrome Framework -BlockPainter.cpp:91 )	blink::BlockPainter::paintChildren(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720d94	(Google Chrome Framework -LayoutBlock.cpp:1253 )	blink::LayoutBlock::paintChildren(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666ff21	(Google Chrome Framework -BlockPainter.cpp:266 )	blink::BlockPainter::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&)
0x000000010666fb4e	(Google Chrome Framework -BlockPainter.cpp:200 )	blink::BlockPainter::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720db4	(Google Chrome Framework -LayoutBlock.cpp:1258 )	blink::LayoutBlock::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666eff6	(Google Chrome Framework -BlockPainter.cpp:56 )	blink::BlockPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720d74	(Google Chrome Framework -LayoutBlock.cpp:1248 )	blink::LayoutBlock::paint(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666f4ab	(Google Chrome Framework -BlockPainter.cpp:91 )	blink::BlockPainter::paintChildren(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720d94	(Google Chrome Framework -LayoutBlock.cpp:1253 )	blink::LayoutBlock::paintChildren(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666ff21	(Google Chrome Framework -BlockPainter.cpp:266 )	blink::BlockPainter::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&)
0x000000010666fb4e	(Google Chrome Framework -BlockPainter.cpp:200 )	blink::BlockPainter::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720db4	(Google Chrome Framework -LayoutBlock.cpp:1258 )	blink::LayoutBlock::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666eff6	(Google Chrome Framework -BlockPainter.cpp:56 )	blink::BlockPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720d74	(Google Chrome Framework -LayoutBlock.cpp:1248 )	blink::LayoutBlock::paint(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x00000001066a34b7	(Google Chrome Framework -PaintLayerPainter.cpp:589 )	blink::PaintLayerPainter::paintFragmentWithPhase(blink::PaintPhase, blink::PaintLayerFragment const&, blink::GraphicsContext*, blink::ClipRect const&, blink::PaintLayerPaintingInfo const&, blink::LayoutObject*, unsigned int, blink::PaintLayerPainter::ClipState)
0x00000001066a26d2	(Google Chrome Framework -PaintLayerPainter.cpp:639 )	blink::PaintLayerPainter::paintForegroundForFragments(WTF::Vector<blink::PaintLayerFragment, 1ul, WTF::DefaultAllocator> const&, blink::GraphicsContext*, blink::LayoutRect const&, blink::PaintLayerPaintingInfo const&, blink::LayoutObject*, bool, unsigned int)
0x00000001066a1a28	(Google Chrome Framework -PaintLayerPainter.cpp:299 )	blink::PaintLayerPainter::paintLayerContents(blink::GraphicsContext*, blink::PaintLayerPaintingInfo const&, unsigned int, blink::PaintLayerPainter::FragmentPolicy)
0x00000001066a0ad1	(Google Chrome Framework -PaintLayerPainter.cpp:114 )	blink::PaintLayerPainter::paintLayer(blink::GraphicsContext*, blink::PaintLayerPaintingInfo const&, unsigned int)
0x00000001066a231e	(Google Chrome Framework -PaintLayerPainter.cpp:506 )	blink::PaintLayerPainter::paintChildren(unsigned int, blink::GraphicsContext*, blink::PaintLayerPaintingInfo const&, unsigned int)
0x00000001066a1b17	(Google Chrome Framework -PaintLayerPainter.cpp:307 )	blink::PaintLayerPainter::paintLayerContents(blink::GraphicsContext*, blink::PaintLayerPaintingInfo const&, unsigned int, blink::PaintLayerPainter::FragmentPolicy)
0x00000001066a0ad1	(Google Chrome Framework -PaintLayerPainter.cpp:114 )	blink::PaintLayerPainter::paintLayer(blink::GraphicsContext*, blink::PaintLayerPaintingInfo const&, unsigned int)
0x00000001066a077a	(Google Chrome Framework -PaintLayerPainter.cpp:51 )	blink::PaintLayerPainter::paint(blink::GraphicsContext*, blink::LayoutRect const&, unsigned int, blink::LayoutObject*, unsigned int)
0x000000010667f6ab	(Google Chrome Framework -FramePainter.cpp:128 )	blink::FramePainter::paintContents(blink::GraphicsContext*, unsigned int, blink::IntRect const&)
0x000000010667f0d5	(Google Chrome Framework -FramePainter.cpp:45 )	blink::FramePainter::paint(blink::GraphicsContext*, unsigned int, blink::IntRect const&)
0x000000010654647c	(Google Chrome Framework -FrameView.cpp:3742 )	blink::FrameView::paint(blink::GraphicsContext*, blink::IntRect const&) const
0x00000001066ae274	(Google Chrome Framework -PartPainter.cpp:118 )	blink::PartPainter::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&)
0x00000001067a9c74	(Google Chrome Framework -LayoutPart.cpp:248 )	blink::LayoutPart::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x00000001066adbd9	(Google Chrome Framework -PartPainter.cpp:82 )	blink::PartPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&)
0x00000001067a9c54	(Google Chrome Framework -LayoutPart.cpp:243 )	blink::LayoutPart::paint(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666f4ab	(Google Chrome Framework -BlockPainter.cpp:91 )	blink::BlockPainter::paintChildren(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720d94	(Google Chrome Framework -LayoutBlock.cpp:1253 )	blink::LayoutBlock::paintChildren(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666ff21	(Google Chrome Framework -BlockPainter.cpp:266 )	blink::BlockPainter::paintContents(blink::PaintInfo const&, blink::LayoutPoint const&)
0x000000010666fb4e	(Google Chrome Framework -BlockPainter.cpp:200 )	blink::BlockPainter::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720db4	(Google Chrome Framework -LayoutBlock.cpp:1258 )	blink::LayoutBlock::paintObject(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x000000010666eff6	(Google Chrome Framework -BlockPainter.cpp:56 )	blink::BlockPainter::paint(blink::PaintInfo const&, blink::LayoutPoint const&)
0x0000000106720d74	(Google Chrome Framework -LayoutBlock.cpp:1248 )	blink::LayoutBlock::paint(blink::PaintInfo const&, blink::LayoutPoint const&) const
0x00000001066a34b7	(Google Chrome Framework -PaintLayerPainter.cpp:589 )	blink::PaintLayerPainter::paintFragmentWithPhase(blink::PaintPhase, blink::PaintLayerFragment const&, blink::GraphicsContext*, blink::ClipRect const&, blink::PaintLayerPaintingInfo const&, blink::LayoutObject*, unsigned int, blink::PaintLayerPainter::ClipState)
0x00000001066a26d2	(Google Chrome Framework -PaintLayerPainter.cpp:639 )	blink::PaintLayerPainter::paintForegroundForFragments(WTF::Vector<blink::PaintLayerFragment, 1ul, WTF::DefaultAllocator> const&, blink::GraphicsContext*, blink::LayoutRect const&, blink::PaintLayerPaintingInfo const&, blink::LayoutObject*, bool, unsigned int)
0x00000001066a1a28	(Google Chrome Framework -PaintLayerPainter.cpp:299 )	blink::PaintLayerPainter::paintLayerContents(blink::GraphicsContext*, blink::PaintLayerPaintingInfo const&, unsigned int, blink::PaintLayerPainter::FragmentPolicy)
0x0000000106802119	(Google Chrome Framework -CompositedLayerMapping.cpp:2120 )	blink::CompositedLayerMapping::doPaintTask(blink::GraphicsLayerPaintInfo const&, unsigned int const&, blink::GraphicsContext*, blink::IntRect const&) const
0x0000000106802b83	(Google Chrome Framework -CompositedLayerMapping.cpp:2252 )	blink::CompositedLayerMapping::paintContents(blink::GraphicsLayer const*, blink::GraphicsContext&, unsigned int, blink::IntRect const&) const
0x000000010566a46d	(Google Chrome Framework -GraphicsLayer.cpp:321 )	blink::GraphicsLayer::paint(blink::GraphicsContext&, blink::IntRect const&)
0x000000010565e72c	(Google Chrome Framework -ContentLayerDelegate.cpp:98 )	blink::ContentLayerDelegate::paintContents(blink::WebDisplayItemList*, blink::WebRect const&, blink::WebContentLayerClient::PaintingControlSetting)
0x0000000108241a81	(Google Chrome Framework -web_content_layer_impl.cc:76 )	cc_blink::WebContentLayerImpl::PaintContentsToDisplayList(gfx::Rect const&, cc::ContentLayerClient::PaintingControlSetting)
0x0000000108241ac1	(Google Chrome Framework -web_content_layer_impl.cc:66 )	non-virtual thunk to cc_blink::WebContentLayerImpl::PaintContentsToDisplayList(gfx::Rect const&, cc::ContentLayerClient::PaintingControlSetting)
0x0000000104f63029	(Google Chrome Framework -display_list_recording_source.cc:186 )	cc::DisplayListRecordingSource::UpdateAndExpandInvalidation(cc::ContentLayerClient*, cc::Region*, gfx::Size const&, gfx::Rect const&, int, cc::DisplayListRecordingSource::RecordingMode)
0x0000000104f25614	(Google Chrome Framework -picture_layer.cc:151 )	cc::PictureLayer::Update()
0x0000000104fa6b5b	(Google Chrome Framework -layer_tree_host.cc:791 )	cc::LayerTreeHost::DoUpdateLayers(cc::Layer*)
0x0000000104fa68ed	(Google Chrome Framework -layer_tree_host.cc:691 )	cc::LayerTreeHost::UpdateLayers()
0x0000000104fd8da6	(Google Chrome Framework -thread_proxy.cc:732 )	cc::ThreadProxy::BeginMainFrame(scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> >)
0x0000000104fdc029	(Google Chrome Framework -bind_internal.h:176 )	base::internal::InvokeHelper<true, void, base::internal::RunnableAdapter<void (cc::ThreadProxy::*)(scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> >)>, base::internal::TypeList<base::WeakPtr<cc::ThreadProxy> const&, scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> > > >::MakeItSo(base::internal::RunnableAdapter<void (cc::ThreadProxy::*)(scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> >)>, base::WeakPtr<cc::ThreadProxy> const&, scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> >)
0x0000000104fdbf76	(Google Chrome Framework -bind_internal.h:343 )	base::internal::Invoker<base::IndexSequence<0ul, 1ul>, base::internal::BindState<base::internal::RunnableAdapter<void (cc::ThreadProxy::*)(scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> >)>, void (cc::ThreadProxy*, scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> >), base::internal::TypeList<base::WeakPtr<cc::ThreadProxy>, base::internal::PassedWrapper<scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> > > > >, base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<cc::ThreadProxy> >, base::internal::UnwrapTraits<base::internal::PassedWrapper<scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> > > > >, base::internal::InvokeHelper<true, void, base::internal::RunnableAdapter<void (cc::ThreadProxy::*)(scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> >)>, base::internal::TypeList<base::WeakPtr<cc::ThreadProxy> const&, scoped_ptr<cc::ThreadProxy::BeginMainFrameAndCommitState, base::DefaultDeleter<cc::ThreadProxy::BeginMainFrameAndCommitState> > > >, void ()>::Run(base::internal::BindStateBase*)
0x000000010440bac9	(Google Chrome Framework -callback.h:396 )	base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask const&)
0x000000010808cadb	(Google Chrome Framework -task_queue_manager.cc:368 )	scheduler::TaskQueueManager::ProcessTaskFromWorkQueue(scheduler::internal::TaskQueueImpl*, scheduler::internal::TaskQueueImpl::Task*)
0x000000010808b65d	(Google Chrome Framework -task_queue_manager.cc:296 )	scheduler::TaskQueueManager::DoWork(bool)
0x000000010808b6fa	(Google Chrome Framework -task_queue_manager.cc:237 )	scheduler::TaskQueueManager::DelayedDoWork()
0x000000010440bac9	(Google Chrome Framework -callback.h:396 )	base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask const&)
0x000000010442bfa8	(Google Chrome Framework -message_loop.cc:481 )	base::MessageLoop::RunTask(base::PendingTask const&)
0x000000010442c29d	(Google Chrome Framework -message_loop.cc:490 )	base::MessageLoop::DeferOrRunPendingTask(base::PendingTask const&)
0x000000010442c7b0	(Google Chrome Framework -message_loop.cc:640 )	base::MessageLoop::DoDelayedWork(base::TimeTicks*)
0x000000010440112c	(Google Chrome Framework -message_pump_mac.mm:332 )	base::MessagePumpCFRunLoopBase::RunWork()
0x0000000104422b29	(Google Chrome Framework + 0x005ebb29 )	base::mac::CallWithEHFrame(void () block_pointer)
0x0000000104400b13	(Google Chrome Framework -message_pump_mac.mm:304 )	base::MessagePumpCFRunLoopBase::RunWorkSource(void*)
0x00007fff87ebe620	(CoreFoundation + 0x000aa620 )	__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
0x00007fff87e9de1b	(CoreFoundation + 0x00089e1b )	__CFRunLoopDoSources0
0x00007fff87e9d33e	(CoreFoundation + 0x0008933e )	__CFRunLoopRun
0x00007fff87e9cd37	(CoreFoundation + 0x00088d37 )	CFRunLoopRunSpecific
0x00007fff9075d0f8	(Foundation + 0x000250f8 )	-[NSRunLoop(NSRunLoop) runMode:beforeDate:]
0x0000000104401763	(Google Chrome Framework -message_pump_mac.mm:606 )	base::MessagePumpNSRunLoop::DoRun(base::MessagePump::Delegate*)
0x0000000104400f63	(Google Chrome Framework -message_pump_mac.mm:236 )	base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*)
0x0000000104440f22	(Google Chrome Framework -run_loop.cc:55 )	base::RunLoop::Run()
0x000000010442b84c	(Google Chrome Framework -message_loop.cc:288 )	base::MessageLoop::Run()
0x0000000108166b95	(Google Chrome Framework -renderer_main.cc:211 )	content::RendererMain(content::MainFunctionParams const&)
0x00000001043bdb1b	(Google Chrome Framework -content_main_runner.cc:798 )	content::ContentMainRunnerImpl::Run()
0x00000001043bd155	(Google Chrome Framework -content_main.cc:19 )	content::ContentMain(content::ContentMainParams const&)
0x0000000103e3a601	(Google Chrome Framework -chrome_main.cc:66 )	ChromeMain
0x0000000103e31f38	(Google Chrome Helper -chrome_exe_main_mac.cc:16 )	main
0x0000000103e31f23	(Google Chrome Helper + 0x00000f23 )	start

I can't reproduce this using the steps at ToT on Linux.
Bizzare. I just tried and it reproed.

More details of build environment:

1. My origin/master is at 6e03065cee6ad249a6b8b14e9f690ee6efb86703. That's Mar 3 11:49.
2. Then I revert c916fccc772dce7924d8cf1266ba4e71344c37c3 on top of that.
3. 'GYP_DEFINES': 'use_goma=1 component=shared_library clang=1', same as you.
4. PPAPI_FLASH_PATH = /mnt/src/chromium/src/third_party/adobe/flash/binaries/ppapi/linux_x64/libpepflashplayer.so
    This seems to work using the one in /opt/google/chrome too.
5. Navigate to http://pps-test-a.appspot.com/repro_545039.html
6. Scroll down with mousewheel.

If it makes any difference, I'm on Cinnamon desktop with compositing on. I have a Z620.

Webpage looks like this before and after scrolling down:


Screenshot from 2016-03-03 12:16:35.png
67.8 KB View Download
Screenshot from 2016-03-03 12:17:17.png
37.5 KB View Download
For some reason third_party/adobe/flash/binaries/ppapi/linux_x64/libpepflashplayer.so doesn't work for me - says permission denied when trying to load the shared library.
But when loading the other path, it definitely shows the plugin running with the blue
background etc.
Oh I see. I had overwritten the settings at some point to turn off PPS. I can now reproduce.
Status: Started (was: Assigned)
Levi and I figured out the bug. The problem is that the resize callback inside of plugin_poster.html is called synchronously during the lifecycle update of the parent frame of the webview plugin, which causes layout to get dirtied on the parent frame, due to the behavior of WebPluginContainerImpl::setNeedsLayout, which is caused by animating the webview plugin for resize.

The solution is to let it update the size, but forcibly update the lifecycle of the webview plugin in WebViewPlugin::updateGeometry rather than passing up requests to do it later.

All of this also allows us to nuke the timer hack in LoadablePluginPlaceholder.

We also found a bug in the geometry code for fixed-position elements.

I think this *might* be a primary cause of crbug.com/590856. Going to test that theory first
before writing more code.
Labels: -Pri-2 ReleaseBlock-Beta M-50 Pri-1
Project Member

Comment 11 by bugdroid1@chromium.org, Mar 4 2016

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

commit 37ca7fe6f5baa7074524c9754010aa3f425cced8
Author: chrishtr <chrishtr@chromium.org>
Date: Fri Mar 04 06:32:05 2016

In mapAncestorToLocal, account for frame documents always being fixed-position containers.

BUG= 591174 

Review URL: https://codereview.chromium.org/1767573002

Cr-Commit-Position: refs/heads/master@{#379229}

[modify] https://crrev.com/37ca7fe6f5baa7074524c9754010aa3f425cced8/third_party/WebKit/Source/core/layout/LayoutView.cpp
[modify] https://crrev.com/37ca7fe6f5baa7074524c9754010aa3f425cced8/third_party/WebKit/Source/core/layout/MapCoordinatesTest.cpp

Project Member

Comment 12 by bugdroid1@chromium.org, Mar 4 2016

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

commit 287a7e65b2b5dd05053c1bda4402e0755ad21bf6
Author: chrishtr <chrishtr@chromium.org>
Date: Fri Mar 04 20:07:43 2016

Negate just the IsFixed bit.

BUG= 591174 

Review URL: https://codereview.chromium.org/1764223002

Cr-Commit-Position: refs/heads/master@{#379340}

[modify] https://crrev.com/287a7e65b2b5dd05053c1bda4402e0755ad21bf6/third_party/WebKit/Source/core/layout/LayoutView.cpp

Project Member

Comment 13 by bugdroid1@chromium.org, Mar 4 2016

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

commit 93e8a2374eae0690244c6c1e8b211d17409e2154
Author: chrishtr <chrishtr@chromium.org>
Date: Fri Mar 04 20:55:14 2016

Update a webview plugin's WebView's lifecycle immediately after resizing.

Remove the delay timer before updating a webview plugin's geometry, since
the referenced Blink compositing bug has been fixed.

BUG= 591174 

Review URL: https://codereview.chromium.org/1764043002

Cr-Commit-Position: refs/heads/master@{#379351}

[modify] https://crrev.com/93e8a2374eae0690244c6c1e8b211d17409e2154/components/plugins/renderer/webview_plugin.cc
[modify] https://crrev.com/93e8a2374eae0690244c6c1e8b211d17409e2154/components/plugins/renderer/webview_plugin.h
[modify] https://crrev.com/93e8a2374eae0690244c6c1e8b211d17409e2154/third_party/WebKit/Source/core/frame/FrameView.cpp

Status: Fixed (was: Started)
Tommy, you can now revert the revert of your patch in loadable_plugin_placeholder.cc.
Cc: amineer@chromium.org
Labels: -ReleaseBlock-Beta
It's not clear if this has to block Chrome 50, depends on the crash rates. But if needed
we could merge it.

Sign in to add a comment