Tether makes new accounts crash on initial signin if kMultiDeviceApi flag is enabled |
||
Issue description
repro: sign in to an existing account with a Tether host. Chrome will immediately crash when Tether tries to do a host scan.
This is the last few lines of /home/chronos/user/log/chrome before the crash:
[17224:17224:0625/174909.324763:INFO:tether_service.cc(202)] Starting up TetherComponent.
[17224:17224:0625/174909.324906:INFO:host_scanner_impl.cc(101)] Starting Tether host scan. 2 potential host(s) included in the search.
GDB stack trace:
mojo::internal::Serializer<chromeos::device_sync::mojom::RemoteDeviceDataView, cryptauth::RemoteDevice const>::Serialize(cryptauth::RemoteDevice const&, mojo::internal::Buffer*, chromeos::device_sync::mojom::internal::RemoteDevice_Data::BufferWriter*, mojo::internal::SerializationContext*) ()
at /usr/local/google/home/hansberry/chromium/.cros_cache/chrome-sdk/tarballs/eve+10779.0.0+target_toolchain/usr/bin/../include/c++/v1/string:1226
#0 mojo::internal::Serializer<chromeos::device_sync::mojom::RemoteDeviceDataView, cryptauth::RemoteDevice const>::Serialize(cryptauth::RemoteDevice const&, mojo::internal::Buffer*, chromeos::device_sync::mojom::internal::RemoteDevice_Data::BufferWriter*, mojo::internal::SerializationContext*) ()
at /usr/local/google/home/hansberry/chromium/.cros_cache/chrome-sdk/tarballs/eve+10779.0.0+target_toolchain/usr/bin/../include/c++/v1/string:1226
#1 0x00005a6ab9dfe8cd in chromeos::secure_channel::mojom::SecureChannelProxy::ListenForConnectionFromDevice(cryptauth::RemoteDevice const&, cryptauth::RemoteDevice const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate>) ()
at ../../mojo/public/cpp/bindings/lib/serialization_forward.h:42
warning: (Internal error: pc 0x5a6ab9dfe8cc in read in CU, but not in symtab.)
warning: Could not find DWO CU obj/chromeos/services/secure_channel/public/cpp/client/client/secure_channel_client_impl.dwo(0x403c1f87d183be80) referenced by CU at offset 0x3fee9 [in module /opt/google/chrome/chrome]
#2 0x00005a6ab9dfc8e7 in chromeos::secure_channel::SecureChannelClientImpl::PerformListenForConnectionFromDevice(cryptauth::RemoteDeviceRef, cryptauth::RemoteDeviceRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate>) ()
at ../../chromeos/services/secure_channel/public/cpp/client/secure_channel_client_impl.cc:116
#3 0x00005a6ab9dfcbc5 in void base::internal::FunctorTraits<void (chromeos::secure_channel::SecureChannelClientImpl::*)(cryptauth::RemoteDeviceRef, cryptauth::RemoteDeviceRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate>), void>::Invoke<void (chromeos::secure_channel::SecureChannelClientImpl::*)(cryptauth::RemoteDeviceRef, cryptauth::RemoteDeviceRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate>), base::WeakPtr<chromeos::secure_channel::SecureChannelClientImpl>, cryptauth::RemoteDeviceRef, cryptauth::RemoteDeviceRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate> >(void (chromeos::secure_channel::SecureChannelClientImpl::*)(cryptauth::RemoteDeviceRef, cryptauth::RemoteDeviceRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate>), base::WeakPtr<chromeos::secure_channel::SecureChannelClientImpl>&&, cryptauth::RemoteDeviceRef&&, cryptauth::RemoteDeviceRef&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, chromeos::secure_channel::ConnectionPriority&&, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate>&&) () at ../../base/bind_internal.h:507
#4 0x00005a6ab9dfcaea in base::internal::Invoker<base::internal::BindState<void (chromeos::secure_channel::SecureChannelClientImpl::*)(cryptauth::RemoteDeviceRef, cryptauth::RemoteDeviceRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate>), base::WeakPtr<chromeos::secure_channel::SecureChannelClientImpl>, cryptauth::RemoteDeviceRef, cryptauth::RemoteDeviceRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, chromeos::secure_channel::ConnectionPriority, mojo::InterfacePtr<chromeos::secure_channel::mojom::ConnectionDelegate> >, void ()>::RunOnce(base::internal::BindStateBase*) () at ../../base/bind_internal.h:627
#5 0x00005a6abaf64d29 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) () at ../../base/callback.h:99
#6 0x00005a6abaf7ac97 in base::MessageLoop::RunTask(base::PendingTask*) () at ../../base/message_loop/message_loop.cc:319
#7 0x00005a6abaf7b187 in base::MessageLoop::DoWork() () at ../../base/message_loop/message_loop.cc:329
#8 0x00005a6abaff43c9 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) () at ../../base/message_loop/message_pump_libevent.cc:210
I initially suspected this was due to DeviceSyncClient not having devices synced yet, but that doesn't seem to be the issue because the logs say "2 potential host(s) included in the search". I'll keep investigating.
,
Jun 26 2018
Your comment #1 seems like the likely explanation to me, Ryan.
,
Jul 3
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c553b5e2af9d497bf17b8ffcef675b1cec227255 commit c553b5e2af9d497bf17b8ffcef675b1cec227255 Author: Ryan Hansberry <hansberry@chromium.org> Date: Tue Jul 03 18:47:04 2018 [CrOS Multidevice] Fix crash in Tether. This issue manifested as all new account creations on Chrome OS crashing. It was caused by the local device metadata being returned by DeviceSyncClient not yet being initialized. DeviceSyncClient now internally keeps track of whether it is "ready", that is, whether its local device metadata and synced devices are available yet. Only once it has loaded both sets of data will it mark itself as "ready", and inform clients appropriately. This change also ensures that DeviceSyncClient's Observer callbacks, OnEnrollmentFinished() and OnNewDevicesSynced(), are not called until DeviceSyncClient is ready. R=jhawkins@chromium.org, khorimoto@chromium.org Bug: 856406 Change-Id: Idb6fdf123d4d90883f67bb1e88a617004926207e Reviewed-on: https://chromium-review.googlesource.com/1121351 Reviewed-by: James Hawkins <jhawkins@chromium.org> Reviewed-by: Kyle Horimoto <khorimoto@chromium.org> Commit-Queue: Ryan Hansberry <hansberry@chromium.org> Cr-Commit-Position: refs/heads/master@{#572309} [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.h [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chrome/browser/chromeos/tether/tether_service.cc [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chrome/browser/chromeos/tether/tether_service.h [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chrome/browser/chromeos/tether/tether_service_unittest.cc [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/device_sync/public/cpp/device_sync_client.cc [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/device_sync/public/cpp/device_sync_client.h [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/device_sync/public/cpp/device_sync_client_impl.cc [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/device_sync/public/cpp/device_sync_client_impl.h [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/device_sync/public/cpp/device_sync_client_impl_unittest.cc [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/device_sync/public/cpp/fake_device_sync_client.h [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/multidevice_setup/multidevice_setup_initializer.cc [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/multidevice_setup/multidevice_setup_initializer.h [modify] https://crrev.com/c553b5e2af9d497bf17b8ffcef675b1cec227255/chromeos/services/multidevice_setup/multidevice_setup_service_unittest.cc
,
Jul 3
|
||
►
Sign in to add a comment |
||
Comment 1 by hansberry@chromium.org
, Jun 26 2018