brave / brave-browser

Brave browser for Android, iOS, Linux, macOS, Windows.
https://brave.com
Mozilla Public License 2.0
17.54k stars 2.27k forks source link

[C128] importing from Chrome crashes the browser #40470

Closed LaurenWags closed 4 weeks ago

LaurenWags commented 1 month ago

Description

Browser crashes when importing from Chrome with C128. brave://welcome briefly shows the "Success" screen and then crashes.

Crash ID: 18d10000-ebf9-720c-0000-000000000000

Callstack:

``` [ 00 ] logging::LogMessage::Flush()::$_0::operator()() const ( immediate_crash.h:179 ) [ 01 ] absl::cleanup_internal::Storage::InvokeCallback() ( cleanup.h:87 ) [ 02 ] absl::Cleanup::~Cleanup() ( cleanup.h:106 ) [ 03 ] absl::Cleanup::~Cleanup() ( cleanup.h:104 ) [ 04 ] logging::LogMessage::Flush() ( logging.cc:956 ) [ 05 ] logging::LogMessage::~LogMessage() ( logging.cc:727 ) [ 06 ] logging::(anonymous namespace)::CheckLogMessage::~CheckLogMessage() ( check.cc:186 ) [ 07 ] logging::(anonymous namespace)::CheckLogMessage::~CheckLogMessage() ( check.cc:181 ) [ 08 ] logging::(anonymous namespace)::CheckLogMessage::~CheckLogMessage() ( check.cc:181 ) [ 09 ] std::__Cr::default_delete::operator()(logging::LogMessage*) const ( unique_ptr.h:67 ) [ 10 ] std::__Cr::unique_ptr>::reset(logging::LogMessage*) ( unique_ptr.h:278 ) [ 11 ] logging::CheckError::~CheckError() ( check.cc:350 ) [ 12 ] logging::CheckError::~CheckError() ( check.cc:340 ) [ 13 ] base::internal::check_is_test_impl(base::NotFatalUntil) ( check_is_test.cc:16 ) [ 14 ] ExtensionInstallPromptShowParams::ExtensionInstallPromptShowParams(content::WebContents*) ( extension_install_prompt_show_params.cc:51 ) [ 15 ] ExtensionInstallPrompt::ExtensionInstallPrompt(content::WebContents*) ( extension_install_prompt.cc:430 ) [ 16 ] std::__Cr::__unique_if::__unique_single std::__Cr::make_unique(content::WebContents*&) ( unique_ptr.h:620 ) [ 17 ] download_crx_util::(anonymous namespace)::CreateExtensionInstallPrompt(Profile*, download::DownloadItem const&) ( download_crx_util.cc:63 ) [ 18 ] download_crx_util::CreateCrxInstaller(Profile*, download::DownloadItem const&) ( download_crx_util.cc:92 ) [ 19 ] extensions::WebstoreInstaller::StartCrxInstaller(download::DownloadItem const&) ( webstore_installer.cc:688 ) [ 20 ] extensions::WebstoreInstaller::OnDownloadUpdated(download::DownloadItem*) ( webstore_installer.cc:485 ) [ 21 ] download::DownloadItemImpl::UpdateObservers() ( download_item_impl.cc:520 ) [ 22 ] download::DownloadItemImpl::Completed() ( download_item_impl.cc:2103 ) [ 23 ] download::DownloadItemImpl::OnRenameAndAnnotateDone(download::DownloadInterruptReason, base::FilePath const&) ( download_item_impl.cc:1982 ) [ 24 ] base::RepeatingCallback, std::__Cr::allocator>> const&)>::Run(media::Decryptor::Status, std::__Cr::list, std::__Cr::allocator>> const&) && ( callback.h:361 ) [ 25 ] void base::internal::DecayedFunctorTraits, std::__Cr::allocator>> const&)>, media::Decryptor::Status&&, std::__Cr::list, std::__Cr::allocator>>&&>::Invoke, std::__Cr::allocator>> const&)>, media::Decryptor::Status, std::__Cr::list, std::__Cr::allocator>>>(base::RepeatingCallback, std::__Cr::allocator>> const&)>&&, media::Decryptor::Status&&, std::__Cr::list, std::__Cr::allocator>>&&) ( bind_internal.h:830 ) [ 26 ] void base::internal::InvokeHelper, std::__Cr::allocator>> const&)>&&, media::Decryptor::Status&&, std::__Cr::list, std::__Cr::allocator>>&&>, void, 0ul, 1ul>::MakeItSo, std::__Cr::allocator>> const&)>, std::__Cr::tuple, std::__Cr::allocator>>>>(base::RepeatingCallback, std::__Cr::allocator>> const&)>&&, std::__Cr::tuple, std::__Cr::allocator>>>&&) ( bind_internal.h:930 ) [ 27 ] void base::internal::Invoker, std::__Cr::allocator>> const&)>&&, media::Decryptor::Status&&, std::__Cr::list, std::__Cr::allocator>>&&>, base::internal::BindState, std::__Cr::allocator>> const&)>, media::Decryptor::Status, std::__Cr::list, std::__Cr::allocator>>>, void ()>::RunImpl, std::__Cr::allocator>> const&)>, std::__Cr::tuple, std::__Cr::allocator>>>, 0ul, 1ul>(base::RepeatingCallback, std::__Cr::allocator>> const&)>&&, std::__Cr::tuple, std::__Cr::allocator>>>&&, std::__Cr::integer_sequence) ( bind_internal.h:1067 ) [ 28 ] base::internal::Invoker, std::__Cr::allocator>> const&)>&&, media::Decryptor::Status&&, std::__Cr::list, std::__Cr::allocator>>&&>, base::internal::BindState, std::__Cr::allocator>> const&)>, media::Decryptor::Status, std::__Cr::list, std::__Cr::allocator>>>, void ()>::RunOnce(base::internal::BindStateBase*) ( bind_internal.h:980 ) [ 29 ] base::OnceCallback::Run() && ( callback.h:156 ) [ 30 ] base::TaskAnnotator::RunTaskImpl(base::PendingTask&) ( task_annotator.cc:203 ) [ 31 ] void base::TaskAnnotator::RunTask(perfetto::StaticString, base::PendingTask&, base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*)::$_3&&) ( task_annotator.h:90 ) [ 32 ] base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*) ( thread_controller_with_message_pump_impl.cc:484 ) [ 33 ] base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() ( thread_controller_with_message_pump_impl.cc:346 ) [ 34 ] non-virtual thunk to base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() ( thread_controller_with_message_pump_impl.cc:0 ) [ 35 ] base::MessagePumpCFRunLoopBase::RunWork() ( message_pump_apple.mm:450 ) [ 36 ] invocation function for block in base::MessagePumpCFRunLoopBase::RunWorkSource(void*) ( message_pump_apple.mm:422 ) [ 37 ] base::apple::CallWithEHFrame(void () block_pointer) [ 38 ] base::MessagePumpCFRunLoopBase::RunWorkSource(void*) ( message_pump_apple.mm:421 ) [ 39 ] 0x7ff8134d2eaa [ 40 ] 0x7ff8134d2e4c [ 41 ] 0x7ff8134d2c25 [ 42 ] 0x7ff8134d18af [ 43 ] 0x7ff8134d0eb1 [ 44 ] RunCurrentEventLoopInMode [ 45 ] ReceiveNextEventCommon [ 46 ] _BlockUntilNextEventMatchingListInModeWithFilter [ 47 ] 0x7ff81656fb18 [ 48 ] 0x7ff81656e9c2 [ 49 ] __71-[BrowserCrApplication nextEventMatchingMask:untilDate:inMode:dequeue:]_block_invoke ( chrome_browser_application_mac.mm:335 ) [ 50 ] base::apple::CallWithEHFrame(void () block_pointer) [ 51 ] -[BrowserCrApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ( chrome_browser_application_mac.mm:334 ) [ 52 ] 0x7ff816561037 [ 53 ] base::MessagePumpNSApplication::DoRun(base::MessagePump::Delegate*) ( message_pump_apple.mm:808 ) [ 54 ] base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) ( message_pump_apple.mm:161 ) [ 55 ] base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool, base::TimeDelta) ( thread_controller_with_message_pump_impl.cc:654 ) [ 56 ] non-virtual thunk to base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool, base::TimeDelta) ( thread_controller_with_message_pump_impl.cc:0 ) [ 57 ] base::RunLoop::Run(base::Location const&) ( run_loop.cc:134 ) [ 58 ] content::BrowserMainLoop::RunMainMessageLoop() ( browser_main_loop.cc:1097 ) [ 59 ] content::BrowserMainRunnerImpl::Run() ( browser_main_runner_impl.cc:160 ) [ 60 ] content::BrowserMain(content::MainFunctionParams) ( browser_main.cc:34 ) [ 61 ] content::ContentMainRunnerImpl::RunBrowser(content::MainFunctionParams, bool) ( content_main_runner_impl.cc:735 ) [ 62 ] content::ContentMainRunnerImpl::Run() ( content_main_runner_impl.cc:1173 ) [ 63 ] content::RunContentProcess(content::ContentMainParams, content::ContentMainRunner*) ( content_main.cc:333 ) [ 64 ] content::ContentMain(content::ContentMainParams) ( content_main.cc:346 ) [ 65 ] ChromeMain ( chrome_main.cc:230 ) [ 66 ] main ( chrome_exe_main_mac.cc:217 ) [ 67 ] 0x7ff81309c418 [ 68 ] 0x7ff81309c595 [ 69 ] 0x7ff81309c52b [ 70 ] AutoreleasePoolPage::print() [ 71 ] 0x7ff81309b070 ```

Saw the below in my terminal when the browser crashed:

``` [30410:259:0814/154428.094938:FATAL:check_is_test.cc(16)] Check failed: g_this_is_a_test. [0814/154428.304160:WARNING:crash_report_exception_handler.cc(235)] UniversalExceptionRaise: (os/kern) failure (5) [0814/154428.304343:ERROR:directory_reader_posix.cc(43)] opendir /Users/laurenwags/Library/Application Support/BraveSoftware/Brave-Browser-Beta/Crashpad/attachments/e0f4f180-96ec-4c98-9fba-3b242a5ccc2b: No such file or directory (2) zsh: trace trap /Applications/Brave\ Browser\ Beta.app/Contents/MacOS/Brave\ Browser\ Beta ```

The crash does not reproduce with 1.69.144 Chromium: 127.0.6533.100.

Issue also doesn't reproduce when importing from Firefox when using 1.69.145 Chromium: 128.0.6613.27. Note, certain data isn't imported from Firefox, see known issue https://github.com/brave/brave-browser/issues/34055.

Steps to reproduce

  1. Have a Chrome profile with bookmarks, passwords, extensions, etc (note - per @mkarolin importing extensions are what seem to be causing the crash)
  2. Launch fresh profile of 1.69.145
  3. Import the Chrome profile from brave://welcome
  4. Enter password when prompted

Also reproduces with:

  1. Using 1.69.145, visit brave://settings/importData
  2. Choose Chrome profile to import
  3. Select "Import" button
  4. Enter password when prompted

Actual result

Browser briefly shows "Success" before crashing

Expected result

No crash and data imports as expected

NOTE - passwords from Chrome aren't imported on macOS. Known issue logged with https://github.com/brave/brave-browser/issues/34046.

Reproduces how often

Easily reproduced

Brave version (brave://version info)

Brave 1.69.145 Chromium: 128.0.6613.27 (Official Build) beta (x86_64)
Revision b029337c8485766fbc2dd25b11a46c88c8aaf2b4
OS macOS Version 13.6.9 (Build 22G830)

Channel information

Reproducibility

Miscellaneous information

cc @brave/qa-team @rebron @mkarolin

LaurenWags commented 1 month ago

Reproduced on macOS arm64:

Brave   1.69.145 Chromium: 128.0.6613.27 (Official Build) beta (arm64) 
Revision    b029337c8485766fbc2dd25b11a46c88c8aaf2b4
OS  macOS Version 14.6.1 (Build 23G93)

Crash ID: 28e20000-ebf9-720c-0000-000000000000

LaurenWags commented 1 month ago

@kjozwiak wasn't able to reproduce on Win 11 and @btlechowski could not reproduce on Linux. Seems like macOS only issue.

LaurenWags commented 3 weeks ago

Adding QA/Blocked until uplifted to 1.69.x

LaurenWags commented 3 weeks ago

Requires 1.69.149 or higher for testing 👍🏻

LaurenWags commented 3 weeks ago

Verified with

Brave | 1.69.149 Chromium: 128.0.6613.40 (Official Build) (x86_64)
-- | --
Revision | a6a137ec4f7f0b30e1d3940dbfcde72c32d35baa
OS | macOS Version 13.6.9 (Build 22G830)

Verified STR from https://github.com/brave/brave-browser/issues/40470#issue-2466732365. Confirmed no crash when importing a Chrome profile that contains at least one extension. Confirmed importing from brave://welcome and brave://settings/importData.

brave://welcome brave://settings/importData
1 2

Verified with

Brave   1.69.149 Chromium: 128.0.6613.40 (Official Build) (arm64) 
Revision    a6a137ec4f7f0b30e1d3940dbfcde72c32d35baa
OS  macOS Version 14.6.1 (Build 23G93)

Verified STR from https://github.com/brave/brave-browser/issues/40470#issue-2466732365. Confirmed no crash when importing a Chrome profile that contains at least one extension. Confirmed importing from brave://welcome and brave://settings/importData.

brave://welcome brave://settings/importData
a b