Commit 84d02556 authored by David Tseng's avatar David Tseng Committed by Chromium LUCI CQ

Fixes crash in chrome.automation.getTree

[97932:775:0107/075158.384149:FATAL:automation_event_router.cc(184)] Check failed: desktop || ax_tree_id != ui::AXTreeIDUnknown().
0   libbase.dylib                       0x0000000104b0d23f base::debug::CollectStackTrace(void**, unsigned long) + 31
1   libbase.dylib                       0x0000000104819ca8 base::debug::StackTrace::StackTrace(unsigned long) + 72
2   libbase.dylib                       0x0000000104819d2d base::debug::StackTrace::StackTrace(unsigned long) + 29
3   libbase.dylib                       0x0000000104819d05 base::debug::StackTrace::StackTrace() + 37
4   libbase.dylib                       0x0000000104872433 logging::LogMessage::~LogMessage() + 179
5   libbase.dylib                       0x00000001048733b5 logging::LogMessage::~LogMessage() + 21
6   libbase.dylib                       0x00000001048733d9 logging::LogMessage::~LogMessage() + 25
7   libbase.dylib                       0x00000001047d730b logging::CheckError::~CheckError() + 43
8   libbase.dylib                       0x00000001047d6dc5 logging::CheckError::~CheckError() + 21
9   libchrome_dll.dylib                 0x0000000109cdc3bb extensions::AutomationEventRouter::Register(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, ui::AXTreeID, bool) + 219
10  libchrome_dll.dylib                 0x0000000109cdc2b2 extensions::AutomationEventRouter::RegisterListenerForOneTree(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, ui::AXTreeID) + 98
11  libchrome_dll.dylib                 0x0000000109ce3efb extensions::AutomationInternalEnableTabFunction::Run() + 1579
12  libchrome_dll.dylib                 0x0000000109889e8b ExtensionFunction::RunWithValidation() + 539
13  libchrome_dll.dylib                 0x0000000109894d1d extensions::ExtensionFunctionDispatcher::DispatchWithCallbackInternal(ExtensionHostMsg_Request_Params const&, content::RenderFrameHost*, int, base::RepeatingCallback<void (ExtensionFunction::ResponseType, base::ListValue const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)> const&) + 1741
14  libchrome_dll.dylib                 0x0000000109893f4d extensions::ExtensionFunctionDispatcher::Dispatch(ExtensionHostMsg_Request_Params const&, content::RenderFrameHost*, int) + 637
15  libchrome_dll.dylib                 0x0000000109921bd3 extensions::ExtensionWebContentsObserver::OnRequest(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&) + 211
16  libchrome_dll.dylib                 0x0000000109923827 void IPC::DispatchToMethodImpl<extensions::ExtensionWebContentsObserver, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&), content::RenderFrameHost, std::__1::tuple<ExtensionHostMsg_Request_Params>, 0ul>(extensions::ExtensionWebContentsObserver*, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&), content::RenderFrameHost*, std::__1::tuple<ExtensionHostMsg_Request_Params>&&, std::__1::integer_sequence<unsigned long, 0ul>) + 167
17  libchrome_dll.dylib                 0x00000001099236d8 std::__1::enable_if<(sizeof...(ExtensionHostMsg_Request_Params const&)) == (std::tuple_size<std::__1::decay<std::__1::tuple<ExtensionHostMsg_Request_Params> >::type>::value), void>::type IPC::DispatchToMethod<extensions::ExtensionWebContentsObserver, content::RenderFrameHost, ExtensionHostMsg_Request_Params const&, std::__1::tuple<ExtensionHostMsg_Request_Params> >(extensions::ExtensionWebContentsObserver*, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&), content::RenderFrameHost*, std::__1::tuple<ExtensionHostMsg_Request_Params>&&) + 136
18  libchrome_dll.dylib                 0x0000000109921a7f bool IPC::MessageT<ExtensionHostMsg_Request_Meta, std::__1::tuple<ExtensionHostMsg_Request_Params>, void>::Dispatch<extensions::ExtensionWebContentsObserver, extensions::ExtensionWebContentsObserver, content::RenderFrameHost, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&)>(IPC::Message const*, extensions::ExtensionWebContentsObserver*, extensions::ExtensionWebContentsObserver*, content::RenderFrameHost*, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&)) + 575
19  libchrome_dll.dylib                 0x00000001099217e7 extensions::ExtensionWebContentsObserver::OnMessageReceived(IPC::Message const&, content::RenderFrameHost*) + 295
20  libchrome_dll.dylib                 0x000000010f2a0216 extensions::ChromeExtensionWebContentsObserver::OnMessageReceived(IPC::Message const&, content::RenderFrameHost*) + 166
21  libcontent.dylib                    0x00000001486eba12 content::WebContentsImpl::OnMessageReceived(content::RenderFrameHostImpl*, IPC::Message const&) + 706
22  libcontent.dylib                    0x0000000147fcaa32 content::RenderFrameHostImpl::OnMessageReceived(IPC::Message const&) + 114
23  libcontent.dylib                    0x00000001480cb8b4 content::RenderProcessHostImpl::OnMessageReceived(IPC::Message const&) + 228
24  libipc.dylib                        0x000000013b853700 IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const&) + 160
25  libipc.dylib                        0x000000013b859cb7 void base::internal::FunctorTraits<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), void>::Invoke<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>(void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>&&, IPC::Message&&) + 151
26  libipc.dylib                        0x000000013b859b66 void base::internal::InvokeHelper<false, void>::MakeItSo<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>(void (IPC::ChannelProxy::Context::*&&)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>&&, IPC::Message&&) + 102
27  libipc.dylib                        0x000000013b859ad3 void base::internal::Invoker<base::internal::BindState<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>, void ()>::RunImpl<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), std::__1::tuple<scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>, 0ul, 1ul>(void (IPC::ChannelProxy::Context::*&&)(IPC::Message const&), std::__1::tuple<scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) + 99
28  libipc.dylib                        0x000000013b859a5c base::internal::Invoker<base::internal::BindState<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>, void ()>::RunOnce(base::internal::BindStateBase*) + 76
29  libbase.dylib                       0x00000001047cba2f base::OnceCallback<void ()>::Run() && + 111
30  libbase.dylib                       0x00000001049e2fd2 base::TaskAnnotator::RunTask(char const*, base::PendingTask*) + 1394
31  libbase.dylib                       0x0000000104a36bc1 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow*) + 1569
32  libbase.dylib                       0x0000000104a36343 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() + 147

R=dmazzoni@chromium.org

Change-Id: I1dbef11639111a1c5723ad7f8636c0dc39c0f8eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2614842Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Commit-Queue: David Tseng <dtseng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#841300}
parent d9e44c4c
......@@ -282,6 +282,10 @@ ExtensionFunction::ResponseAction AutomationInternalEnableTabFunction::Run() {
ui::AXTreeID ax_tree_id = rfh->GetAXTreeID();
// The AXTreeID is not yet ready/set.
if (ax_tree_id == ui::AXTreeIDUnknown())
return RespondNow(Error("Tab is not ready."));
// This gets removed when the extension process dies.
AutomationEventRouter::GetInstance()->RegisterListenerForOneTree(
extension_id(), source_process_id(), ax_tree_id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment