Skip to content

crashes when sending tabs from mobile to desktop #45198

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1 of 6 tasks
simonhong opened this issue Apr 4, 2025 · 2 comments · Fixed by brave/brave-core#28498
Closed
1 of 6 tasks

crashes when sending tabs from mobile to desktop #45198

simonhong opened this issue Apr 4, 2025 · 2 comments · Fixed by brave/brave-core#28498

Comments

@simonhong
Copy link
Member

Description

[ 00 ] ImmediateCrash() ( immediate_crash.h:186 )
[ 01 ] CheckFailure() ( check.h:256 )
[ 02 ] send_tab_to_self::SendTabToSelfToolbarIconController::ShowToolbarButton(send_tab_to_self::SendTabToSelfEntry const &,Browser *) ( send_tab_to_self_toolbar_icon_controller.cc:127 )
[ 03 ] send_tab_to_self::SendTabToSelfClientService::EntriesAddedRemotely(std::__Cr::vector<const send_tab_to_self::SendTabToSelfEntry *,std::__Cr::allocator<const send_tab_to_self::SendTabToSelfEntry *> > const &) ( send_tab_to_self_client_service.cc:51 )
[ 04 ] send_tab_to_self::SendTabToSelfBridge::NotifyRemoteSendTabToSelfEntryAdded(std::__Cr::vector<const send_tab_to_self::SendTabToSelfEntry *,std::__Cr::allocator<const send_tab_to_self::SendTabToSelfEntry *> > const &) ( send_tab_to_self_bridge.cc:494 )
[ 05 ] send_tab_to_self::SendTabToSelfBridge::ApplyIncrementalSyncChanges(std::__Cr::unique_ptr<syncer::MetadataChangeList,std::__Cr::default_delete<syncer::MetadataChangeList> >,std::__Cr::vector<std::__Cr::unique_ptr<syncer::EntityChange,std::__Cr::default_delete<syncer::EntityChange> >,std::__Cr::allocator<std::__Cr::unique_ptr<syncer::EntityChange,std::__Cr::default_delete<syncer::EntityChange> > > >) ( send_tab_to_self_bridge.cc:210 )
[ 06 ] syncer::ClientTagBasedRemoteUpdateHandler::ProcessIncrementalUpdate(sync_pb::DataTypeState const &,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >,std::__Cr::optional<sync_pb::GarbageCollectionDirective>) ( client_tag_based_remote_update_handler.cc:156 )
[ 07 ] syncer::ClientTagBasedDataTypeProcessor::OnIncrementalUpdateReceived(sync_pb::DataTypeState const &,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >,std::__Cr::optional<sync_pb::GarbageCollectionDirective>) ( client_tag_based_data_type_processor.cc:1188 )
[ 08 ] syncer::ClientTagBasedDataTypeProcessor::OnUpdateReceived(sync_pb::DataTypeState const &,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >,std::__Cr::optional<sync_pb::GarbageCollectionDirective>) ( client_tag_based_data_type_processor.cc:951 )
[ 09 ] base::internal::DecayedFunctorTraits<void (syncer::DataTypeProcessor::*)(const sync_pb::DataTypeState &, std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >, std::__Cr::optional<sync_pb::GarbageCollectionDirective>),base::WeakPtr<syncer::DataTypeProcessor> &&,sync_pb::DataTypeState &&,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> > &&,std::__Cr::optional<sync_pb::GarbageCollectionDirective> &&>::Invoke<void (syncer::DataTypeProcessor::*)(const sync_pb::DataTypeState &, std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >, std::__Cr::optional<sync_pb::GarbageCollectionDirective>),const base::WeakPtr<syncer::DataTypeProcessor> &,sync_pb::DataTypeState,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >,std::__Cr::optional<sync_pb::GarbageCollectionDirective> >((sync_pb::DataTypeState const &,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >,std::__Cr::optional<sync_pb::GarbageCollectionDirective>),base::WeakPtr<syncer::DataTypeProcessor> const &,sync_pb::DataTypeState &&,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> > &&,std::__Cr::optional<sync_pb::GarbageCollectionDirective> &&) ( bind_internal.h:728 )
[ 10 ] base::internal::Invoker<base::internal::FunctorTraits<void (syncer::DataTypeProcessor::*&&)(const sync_pb::DataTypeState &, std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >, std::__Cr::optional<sync_pb::GarbageCollectionDirective>),base::WeakPtr<syncer::DataTypeProcessor> &&,sync_pb::DataTypeState &&,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> > &&,std::__Cr::optional<sync_pb::GarbageCollectionDirective> &&>,base::internal::BindState<1,1,0,void (syncer::DataTypeProcessor::*)(const sync_pb::DataTypeState &, std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >, std::__Cr::optional<sync_pb::GarbageCollectionDirective>),base::WeakPtr<syncer::DataTypeProcessor>,sync_pb::DataTypeState,std::__Cr::vector<syncer::UpdateResponseData,std::__Cr::allocator<syncer::UpdateResponseData> >,std::__Cr::optional<sync_pb::GarbageCollectionDirective> >,void ()>::RunOnce(base::internal::BindStateBase *) ( bind_internal.h:970 )
[ 11 ] base::TaskAnnotator::RunTaskImpl(base::PendingTask &) ( task_annotator.cc:217 )
[ 12 ] base::TaskAnnotator::RunTask(perfetto::StaticString,base::PendingTask &,base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl::<lambda_4> &&) ( task_annotator.h:106 )

Reported by users - https://bravesoftware.slack.com/archives/C01826CM3J9/p1743697085773229

Steps to reproduce

  1. sending tabs from mobile to desktop

Actual result

No crash

Expected result

crash

Reproduces how often

Easily reproduced

Brave version (brave://version info)

1.77.95 stable on desktop

Channel information

  • release (stable)
  • beta
  • nightly

Reproducibility

  • with Brave Shields disabled
  • with Brave Rewards disabled
  • in the latest version of Chrome

Miscellaneous information

cc @rebron @brave/qa-team

@kjozwiak
Copy link
Member

kjozwiak commented Apr 4, 2025

The above requires 1.77.96 or higher for 1.77.x verification 👍

@MadhaviSeelam
Copy link

MadhaviSeelam commented Apr 8, 2025

Verification PASSED using

Brave | 1.77.96 Chromium: 135.0.7049.52 (Official Build) (64-bit)
-- | --
Revision | fb998e48b1fb293cd93b86a89c56d68efef03046
OS | Windows 11 Version 24H2 (Build 26100.3476)

Reproduced the issue using the STR from brave/brave-core#28498 (comment)

Confirmed Brave is not crashed when sending tabs from mobile to desktop

  1. Sync enabled on both devices before sharing tabs/links
  2. once sync has been setup/configured on both devices, visit a random article/website on Android
  3. share the page by clicking on the Share button and selecting Send to devices
  4. ensure that there's a modal appearing at the bottom with a list of all the available devices
  5. select a device and ensure that Brave doesn't crash/runs into any obvious issues
  6. ensure that the tab appears on Desktop after a few seconds and can be opened without any issues/failures

Confirmed Brave didn't crash when sending tabs from mobile to desktop

example example example example example example example example
Image Image Image Image Image Image Image Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants