NOTREACHED in View::OnTouchEvent from ash::AshWindowTreeHostPlatform::DispatchEventFromQueue |
||||||
Issue descriptionChrome Tot @ #611148 Device: nocturne Mode: Classic Ash FATAL:view.cc(1118)] Check failed: false. Views should not receive touch events. #0 0x000056c8946780aa in logging::LogMessage::~LogMessage() () at ../../base/logging.cc:874 #1 0x000056c8964e6f9d in non-virtual thunk to views::View::OnTouchEvent(ui::TouchEvent*) () at ../../ui/views/view.cc:1118 #2 0x000056c89571096f in ui::EventDispatcher::DispatchEventToEventHandlers(std::__1::vector<ui::EventHandler*, std::__1::allocator<ui::EventHandler*> >*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:193 #3 0x000056c89571062b in ui::EventDispatcher::ProcessEvent(ui::EventTarget*, ui::Event*) () #4 0x000056c8957104ec in ui::EventDispatcherDelegate::DispatchEvent(ui::EventTarget*, ui::Event*) () #5 0x000056c898d98575 in ui::EventProcessor::OnEventFromSource(ui::Event*) () at ../../ui/events/event_processor.cc:57 #6 0x000056c898d98ae7 in ui::EventSource::SendEventToSinkFromRewriter(ui::Event*, ui::EventRewriter const*) () #7 0x000056c896ffd3e1 in ash::AshWindowTreeHostPlatform::DispatchEventFromQueue(ui::Event*) () #8 0x000056c89722ff9c in ws::HostEventQueue::DispatchOrQueueEvent(ui::Event*, bool) () at ../../services/ws/host_event_queue.cc:39 #9 0x000056c895713cb7 in ui::DispatchEventFromNativeUiEvent(ui::Event* const&, base::OnceCallback<void (ui::Event*)>) () #10 0x000056c8913b8f60 in ui::DrmWindowHost::DispatchEvent(ui::Event* const&) () #11 0x000056c8913b8fed in non-virtual thunk to ui::DrmWindowHost::DispatchEvent(ui::Event* const&) () #12 0x000056c8957037d7 in ui::PlatformEventSource::DispatchEvent(ui::Event*) () #13 0x000056c89594fabc in ui::EventFactoryEvdev::DispatchTouchEvent(ui::TouchEventParams const&) () #14 0x000056c8907e7bed in base::internal::Invoker<base::internal::BindState<base::internal::IgnoreResultHelper<void (content::RenderWidgetHostViewChildFrame::*)(cc::RenderFrameMetadata const&)>, base::WeakPtr<content::RenderWidgetHostViewChildFrame>, cc::RenderFrameMetadata>, void ()>::RunOnce(base::internal::BindStateBase*) () at ../../base/bind_internal.h:516 #15 0x000056c894743527 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) () at ../../base/callback.h:99 #16 0x000056c89468185f in base::MessageLoopImpl::RunTask(base::PendingTask*) () at ../../base/message_loop/message_loop_impl.cc:350 #17 0x000056c894681f12 in base::MessageLoopImpl::DoWork() () at ../../base/message_loop/message_loop_impl.cc:361 #18 0x000056c89473f5f9 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) () #19 0x000056c894681335 in base::MessageLoopImpl::Run(bool) () at ../../base/message_loop/message_loop_impl.cc:302 #20 0x000056c8946aab16 in base::RunLoop::Run() () at ../../base/run_loop.cc:102 #21 0x000056c8941bf835 in ChromeBrowserMainParts::MainMessageLoopRun(int*) () at ../../chrome/browser/chrome_browser_main.cc:1886 #22 0x000056c8919e9664 in content::BrowserMainLoop::RunMainMessageLoopParts() () at ../../content/browser/browser_main_loop.cc:993 #23 0x000056c8919ec023 in content::BrowserMainRunnerImpl::Run() () at ../../content/browser/browser_main_runner_impl.cc:165 #24 0x000056c8919e5dff in content::BrowserMain(content::MainFunctionParams const&) () at ../../content/browser/browser_main.cc:47 #25 0x000056c8941b0402 in content::ContentMainRunnerImpl::Run(bool) () at ../../content/app/content_main_runner_impl.cc:538 #26 0x000056c8941b784f in service_manager::Main(service_manager::MainParams const&) () #27 0x000056c8941ae541 in content::ContentMain(content::ContentMainParams const&) () at ../../content/app/content_main.cc:19 #28 0x000056c8907696bf in ChromeMain () at ../../chrome/app/chrome_main.cc:102
,
Nov 27
Steven says he touched a keypad button on the login screen ("enter pin") ui.
,
Nov 28
I believe this has actually been around for a while. The issue is LoginExpandedPublicAccountView adds itself as a pre-target handler to the shell. LoginExpandedPublicAccountView is a View, which means it inherits View's implementation of OnEvent, which has the DCHECK. Having a View as a pre-target handler is error prone as it means the View may receive an event twice, once as the pre-target handler, and again as part of normal dispatch. The events for these two are *very* different. As I'm not particularly familiar with this code it isn't readily clear to me why this code is a pre-target handler. Assuming a pre-target handler is necessary I recommend moving the pre-target handler to a separate non-view subclass. It doesn't look like the author of this code works on Chrome anymore, so passing to another owner.
,
Nov 28
Issue 909819 has been merged into this issue.
,
Nov 28
Issue 906506 has been merged into this issue.
,
Nov 28
Seems like the pretarget handler is used to hide the expanded view qnnguyen@ can you take a look?
,
Nov 28
This also happens if you run Chrome OS in a VM (go/cros-vm), run vncviewer and then click anywhere on the login screen.
,
Today
(8 hours ago)
,
Today
(8 hours ago)
I found it's easy to repro on linux-chromeos with a debug build on ToT @ #624881 1. Run "xinput list" to get the id of a mouse to simulate touch (8). 2. Run "chrome --touch-devices=8 --login-manager" (with an account already added) 3. Use the mouse to simulate tapping on the login background view. Expected: touch input is handled correctly. Actual: NOTREACHED() crash, callstack below. This doesn't repro if you skip --login-manager or login and then use touch.
,
Today
(6 hours ago)
I believe I found why. LoginExpandedPublicAccountView is a view subclass but also registers itself as a pretarget handler of Shell, which causes this crash. https://cs.chromium.org/chromium/src/ash/login/ui/login_expanded_public_account_view.cc?q=ash/login/ui/login_expanded&sq=package:chromium&g=0&l=652 https://chromium-review.googlesource.com/c/chromium/src/+/1428607 should fix this. |
||||||
►
Sign in to add a comment |
||||||
Comment 1 Deleted