New issue
Advanced search Search tips

Issue 667445 link

Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome , Mac
Pri: 3
Type: Bug


Show other hotlists

Hotlists containing this issue:
Fixing-touch


Sign in to add a comment

DCHECK hit when trying to two-finger scroll a PDF on Mac

Project Member Reported by asvitk...@chromium.org, Nov 21 2016

Issue description

DCHECK hit when trying to two-finger scroll a PDF on Mac.

I hit this in my local build while testing something else with PDFs.

When I open a PDF file and try to two-finger scroll it, I hit this DCHECK:

    DCHECK(blink::WebInputEvent::GestureTapDown == event.type ||
	           gesture_event.resendingPluginId == browser_plugin_instance_id_);

Sometimes, it takes a few scrolls to trigger it.

I think it triggers on all PDFs, but for reference I hit it with this example one: http://www.pdf995.com/samples/pdf.pdf
 
Cc: mcnee@chromium.org
Components: UI>Input>Touch
Cc: dtapu...@chromium.org
I don't think this is related to Kevin's work ... Mac touchpad events should never be hitting a JS touch hander. I suspect this is more likely belated fallout from the generation of GestureScroll events from the touchpad, so adding dtapuska@.

If such a Gesture gets routed to the embedder somehow then it would likely trigger this check.
It would seem to me that this dcheck would always fire if main thread scrolling was forced wouldn't it?

Comment 4 by mcnee@chromium.org, Nov 22 2016

Labels: OS-Chrome
I just hit this on chrome os using a touchscreen.

(Using http://plugindoc.mozdev.org/testpages/pdf.html)

Comment 5 by mcnee@chromium.org, Nov 23 2016

I reverted my pdf pinch zoom change and confirmed that the DCHECK is still hit.

I can reproduce this consistently by doing the following:
1) Move the cursor near the left edge of the viewer
2) Use the trackpad to scroll horizontally so that the navigate back is initiated
3) Once the cursor is outside of the viewer and over the area introduced by the navigate back, scroll vertically

Here's a stacktrace:
[1:1:1123/115345:FATAL:browser_plugin.cc(457)] Check failed: blink::WebInputEvent::GestureTapDown == event.type || gesture_event.resendingPluginId == browser_plugin_instance_id_. 
#0 0x7f63e509f096 base::debug::StackTrace::StackTrace()
#1 0x7f63e50c172e logging::LogMessage::~LogMessage()
#2 0x7f63ea2a0a02 content::BrowserPlugin::handleInputEvent()
#3 0x7f63e81ac790 blink::WebPluginContainerImpl::handleGestureEvent()
#4 0x7f63e81ada23 blink::WebPluginContainerImpl::handleEvent()
#5 0x7f63e8e6ebf6 blink::HTMLPlugInElement::defaultEventHandler()
#6 0x7f63e8c539c5 blink::EventDispatcher::dispatchEventPostProcess()
#7 0x7f63e8c5500b blink::EventDispatcher::dispatch()
#8 0x7f63e8c53394 blink::EventDispatchMediator::dispatchEvent()
#9 0x7f63e8c54bfd blink::EventDispatcher::dispatchEvent()
#10 0x7f63e904631f blink::ScrollManager::handleGestureScrollEvent()
#11 0x7f63e9026490 blink::EventHandler::handleGestureScrollEvent()
#12 0x7f63e81cfe71 blink::WebViewImpl::handleGestureEvent()
#13 0x7f63e8213c84 blink::PageWidgetDelegate::handleInputEvent()
#14 0x7f63e81d140e blink::WebViewImpl::handleInputEvent()
#15 0x7f63ea1f0211 content::RenderWidgetInputHandler::HandleInputEvent()
#16 0x7f63ea0b425d _ZN3IPC8MessageTI30InputMsg_HandleInputEvent_MetaSt5tupleIJPKN5blink13WebInputEventEN2ui11LatencyInfoEN7content22InputEventDispatchTypeEEEvE8DispatchINS9_12RenderWidgetESE_vMSE_FvS6_RKS8_SA_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#17 0x7f63ea0b6e53 content::RenderWidget::OnMessageReceived()
#18 0x7f63ea0a53d1 content::RenderViewImpl::OnMessageReceived()
#19 0x7f63e7f594c9 content::ChildThreadImpl::OnMessageReceived()
#20 0x7f63ea1eb053 content::InputEventFilter::HandleEventOnMainThread()
#21 0x7f63ea1ede92 content::MainThreadEventQueue::DispatchInFlightEvent()
#22 0x7f63ea1ee536 content::MainThreadEventQueue::DispatchSingleEvent()
#23 0x7f63e51616ee base::debug::TaskAnnotator::RunTask()
#24 0x7f63e812669f blink::scheduler::TaskQueueManager::ProcessTaskFromWorkQueue()
#25 0x7f63e8127369 blink::scheduler::TaskQueueManager::DoWork()
#26 0x7f63e51616ee base::debug::TaskAnnotator::RunTask()
#27 0x7f63e50cae12 base::MessageLoop::RunTask()
#28 0x7f63e50cb30e base::MessageLoop::DeferOrRunPendingTask()
#29 0x7f63e50cf330 base::MessageLoop::DoWork()
#30 0x7f63e50cfb33 base::MessagePumpDefault::Run()
#31 0x7f63e50cc43e base::MessageLoop::RunHandler()
#32 0x7f63e50fd5d8 base::RunLoop::Run()
#33 0x7f63ea0c7832 content::RendererMain()
#34 0x7f63e4af9dcf content::RunZygote()
#35 0x7f63e4afa135 content::RunNamedProcessTypeMain()
#36 0x7f63e4afa1f5 content::ContentMainRunnerImpl::Run()
#37 0x7f63e4af9489 content::ContentMain()
#38 0x7f63e2ac3176 ChromeMain
#39 0x7f63e0495fb6 __libc_start_main
#40 0x7f63e2ac2fb4 <unknown>
Mouse wheel event caused by start of two-finger scroll isn't handled by blink::WebViewImpl because of explicit check for PlatformWheelEventPhaseMayBegin flag.
For the unconsumed wheel event content::MouseWheelEventQueue::ProcessMouseWheelAck function fires gesture scroll events which aren't expected by BrowserPlugin.
Shouldn't these generated gesture scroll events also pass ShouldRouteEvent check and routed accordingly?
I hit this DCHECK on Linux, but I was just using the mouse.

Sign in to add a comment