Skip to content
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

Crash when re-opening Brave News Customize 2.0 UI after following sources #26876

Closed
btlechowski opened this issue Nov 19, 2022 · 8 comments · Fixed by brave/brave-core#16037
Closed

Comments

@btlechowski
Copy link
Collaborator

btlechowski commented Nov 19, 2022

Follow some sources then re-open Brave News Customize 2.0 UI. Crash.
Reproduced on 1.46.110 and 1.47.85. Reproduced on Linux and Windows

Steps to Reproduce

Note: Make sure Brave News Customize 2.0 UI is enabled

  1. Clean profile
  2. Launch Brave in en_us locale
  3. Open a new-tab page
  4. Click Customize
  5. Click Brave News in the Customize Dashboard
  6. Click Turn on Brave News`
  7. Click Follow on The New York Times in the Popular category
  8. Click X to close the modal
  9. Click Brave News in the Customize Dashboard aagain

Actual result:

Crash
26876

Expected result:

No crash

Reproduces how often:

100% repro rate

Brave version (brave://version info)

Brave 1.46.110 Chromium: 107.0.5304.110 (Official Build) beta (64-bit)
Revision 2a558545ab7e6fb8177002bf44d4fc1717cb2998-refs/branch-heads/5304@{#1202}
OS Windows 10 Version 21H2 (Build 19044.2251)
Brave 1.46.117 Chromium: 107.0.5304.110 (Official Build) beta (64-bit)
Revision 2a558545ab7e6fb8177002bf44d4fc1717cb2998-refs/branch-heads/5304@{#1202}
OS Linux
Brave 1.47.85 Chromium: 108.0.5359.48 (Official Build) nightly (64-bit)
Revision 18ceeca0d99318e70c00d2e04d88aa55488b5c63-refs/branch-heads/5359@{#854}
OS Windows 10 Version 21H2 (Build 19044.2251)

Version/Channel Information:

  • Can you reproduce this issue with the current release? no
  • Can you reproduce this issue with the beta channel? yes
  • Can you reproduce this issue with the nightly channel? yes

cc @fallaciousreasoning @petemill @mattmcalister @brave/qa-team

@stephendonner
Copy link

stephendonner commented Nov 19, 2022

Saw this also using

Brave 1.47.87 Chromium: 108.0.5359.48 (Official Build) nightly (arm64)
Revision 18ceeca0d99318e70c00d2e04d88aa55488b5c63-refs/branch-heads/5359@{#854}
OS macOS Version 11.7.1 (Build 20G918)
[ 00 ] base::internal::Invoker<base::internal::BindState<brave_news::SuggestionsController::GetSuggestedPublisherIds(base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>)::$_1::operator()(brave_news::SuggestionsController*, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>) const::'lambda'(brave_news::SuggestionsController*, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>)::operator()(brave_news::SuggestionsController*, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>) const::'lambda'(brave_news::SuggestionsController*, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>, history::QueryResults), base::internal::UnretainedWrapper<brave_news::SuggestionsController, base::RawPtrBanDanglingIfSupported>, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>>, void (history::QueryResults)>::RunOnce(base::internal::BindStateBase*, history::QueryResults&&) ( flat_map.h:272 )
[ 01 ] base::internal::Invoker<base::internal::BindState<brave_news::SuggestionsController::GetSuggestedPublisherIds(base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>)::$_1::operator()(brave_news::SuggestionsController*, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>) const::'lambda'(brave_news::SuggestionsController*, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>)::operator()(brave_news::SuggestionsController*, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>) const::'lambda'(brave_news::SuggestionsController*, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>, history::QueryResults), base::internal::UnretainedWrapper<brave_news::SuggestionsController, base::RawPtrBanDanglingIfSupported>, base::flat_map<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>, std::Cr::less<void>, std::Cr::vector<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>, std::Cr::allocator<std::Cr::pair<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, mojo::StructPtr<brave_news::mojom::Publisher>>>>>, base::OnceCallback<void (std::Cr::vector<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::allocator<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>> const&)>>, void (history::QueryResults)>::RunOnce(base::internal::BindStateBase*, history::QueryResults&&) ( char_traits.h:266 )
[ 02 ] void base::internal::ReplyAdapter<history::QueryResults, history::QueryResults>(base::OnceCallback<void (history::QueryResults)>, std::Cr::unique_ptr<history::QueryResults, std::Cr::default_delete<history::QueryResults>>*) ( callback.h:145 )
[ 03 ] base::internal::Invoker<base::internal::BindState<void (*)(base::OnceCallback<void (bool)>, std::Cr::unique_ptr<bool, std::Cr::default_delete<bool>>*), base::OnceCallback<void (bool)>, base::internal::OwnedWrapper<std::Cr::unique_ptr<bool, std::Cr::default_delete<bool>>, std::Cr::default_delete<std::Cr::unique_ptr<bool, std::Cr::default_delete<bool>>>>>, void ()>::RunOnce(base::internal::BindStateBase*) ( bind_internal.h:537 )
[ 04 ] base::CancelableTaskTracker::RunIfNotCanceled(scoped_refptr<base::SequencedTaskRunner> const&, scoped_refptr<base::RefCountedData<base::AtomicFlag>> const&, base::OnceCallback<void ()>) ( callback.h:145 )
[ 05 ] base::CancelableTaskTracker::RunThenUntrackIfNotCanceled(scoped_refptr<base::SequencedTaskRunner> const&, scoped_refptr<base::RefCountedData<base::AtomicFlag>> const&, base::OnceCallback<void ()>, base::OnceCallback<void ()>) ( cancelable_task_tracker.cc:245 )
[ 06 ] base::internal::Invoker<base::internal::BindState<void (*)(scoped_refptr<base::SequencedTaskRunner> const&, scoped_refptr<base::RefCountedData<base::AtomicFlag>> const&, base::OnceCallback<void ()>, base::OnceCallback<void ()>), scoped_refptr<base::SequencedTaskRunner>, scoped_refptr<base::RefCountedData<base::AtomicFlag>>, base::OnceCallback<void ()>, base::OnceCallback<void ()>>, void ()>::RunOnce(base::internal::BindStateBase*) ( bind_internal.h:537 )
[ 07 ] base::internal::Invoker<base::internal::BindState<void (*)(base::(anonymous namespace)::PostTaskAndReplyRelay), base::(anonymous namespace)::PostTaskAndReplyRelay>, void ()>::RunOnce(base::internal::BindStateBase*) ( callback.h:145 )
[ 08 ] non-virtual thunk to base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() ( callback.h:145 )
[ 09 ] invocation function for block in base::MessagePumpCFRunLoopBase::RunWorkSource(void*) ( message_pump_mac.mm:475 )
[ 10 ] base::mac::CallWithEHFrame(void () block_pointer)
[ 11 ] base::MessagePumpCFRunLoopBase::RunWorkSource(void*) ( message_pump_mac.mm:447 )
[ 12 ] __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
[ 13 ] 0x4b6d0001830e99c8
[ 14 ] __CFRunLoopDoSources0
[ 15 ] 0x561a8001830e78a4
[ 16 ] CFRunLoopRunSpecific
[ 17 ] 0xea7680018b0118b0
[ 18 ] ReceiveNextEventCommon
[ 19 ] 0xf83d8001858dc088
[ 20 ] _DPSNextEvent
[ 21 ] 0x472700010a5acf94
[ 22 ] __71-[BrowserCrApplication nextEventMatchingMask:untilDate:inMode:dequeue:]_block_invoke ( chrome_browser_application_mac.mm:239 )
[ 23 ] base::mac::CallWithEHFrame(void () block_pointer)
[ 24 ] -[BrowserCrApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ( chrome_browser_application_mac.mm:238 )
[ 25 ] -[NSApplication run]
[ 26 ] base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) ( message_pump_mac.mm:172 )
[ 27 ] base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) ( message_pump_mac.mm:172 )
[ 28 ] base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool, base::TimeDelta) ( thread_controller_with_message_pump_impl.cc:600 )
[ 29 ] base::RunLoop::Run(base::Location const&) ( thread_controller_with_message_pump_impl.cc:0 )
[ 30 ] content::BrowserMainLoop::RunMainMessageLoop() ( browser_main_loop.cc:1048 )
[ 31 ] content::BrowserMain(content::MainFunctionParams) ( browser_main_runner_impl.cc:163 )
[ 32 ] content::ContentMainRunnerImpl::RunBrowser(content::MainFunctionParams, bool) ( content_main_runner_impl.cc:711 )
[ 33 ] content::ContentMainRunnerImpl::Run() ( content_main_runner_impl.cc:1103 )
[ 34 ] content::RunContentProcess(content::ContentMainParams, content::ContentMainRunner*) ( content_main.cc:342 )
[ 35 ] content::ContentMain(content::ContentMainParams) ( content_main.cc:370 )
[ 36 ] ChromeMain ( chrome_main.cc:175 )
[ 37 ] main ( chrome_exe_main_mac.cc:210 )
[ 38 ] 0x18300942c

Backtrace: 94190400-483e-2b09-0000-000000000000

@fallaciousreasoning fallaciousreasoning self-assigned this Nov 20, 2022
@fallaciousreasoning
Copy link

Interestingly, this seems to be caused by a suggestion for a non-existing publisher...

@brave-builds brave-builds added this to the 1.47.x - Nightly milestone Nov 21, 2022
@rebron rebron added the priority/P2 A bad problem. We might uplift this to the next planned release. label Dec 2, 2022
@rebron rebron added this to Pending review/uplift or retest in General Dec 2, 2022
@stephendonner
Copy link

Verified PASSED using

Brave 1.47.110 Chromium: 108.0.5359.71 (Official Build) beta (x86_64)
Revision 1e0e3868ee06e91ad636a874420e3ca3ae3756ac-refs/branch-heads/5359@{#1016}
OS macOS Version 13.1 (Build 22C5059b)

Steps:

  1. installed 1.47.110
  2. launched Brave
  3. opened a new-tab page
  4. clicked Customize
  5. clicked on Brave News in the Customize dashboard
  6. clicked Turn on Brave News
  7. clicked Follow on The New York Times in the Popular category
  8. clicked X to close the modal
  9. clicked Brave News in the Customize dashboard again

Confirmed no crash, and was able to subscribe to the New York TImes feed

example example example
Screenshot 2022-12-03 at 4 18 53 PM Screenshot 2022-12-03 at 4 18 58 PM Screenshot 2022-12-03 at 4 19 03 PM

@btlechowski
Copy link
Collaborator Author

Verification passed on

Brave 1.47.115 Chromium: 108.0.5359.94 (Official Build) beta (64-bit)
Revision 713576b895246504ccc6b92c2fb8ce2d60194074-refs/branch-heads/5359_71@{#3}
OS Ubuntu 18.04 LTS

Verified test plan from the description

Verified no crash

image
image
image

@kjozwiak
Copy link
Member

kjozwiak commented Dec 7, 2022

Labelling as QA/Blocked as there's an uplift request for 1.46.x as per brave/brave-core#16220. Removed the QA Pass labels as well as we'll need to re-check with 1.46x.. However, I'll use the above as the verifications needed to get the above uplifted into 1.46.x.

@kjozwiak
Copy link
Member

kjozwiak commented Dec 7, 2022

The above requires 1.46.138 or higher for 1.46.x verification 👍

@kjozwiak kjozwiak moved this from Pending review/uplift or retest to Completed in General Dec 7, 2022
@GeetaSarvadnya GeetaSarvadnya added QA/In-Progress Indicates that QA is currently in progress for that particular issue and removed QA/In-Progress Indicates that QA is currently in progress for that particular issue labels Dec 9, 2022
@btlechowski
Copy link
Collaborator Author

Verification passed on

Brave 1.46.141 Chromium: 108.0.5359.99 (Official Build) (64-bit)
Revision 410951fc34bb4b2cbf182231f9f779efaafaf682-refs/branch-heads/5359_71@{#9}
OS Ubuntu 18.04 LTS

Verified test plan from the description

Verified no crash

After enabling Brave News
image

Followed New York Times
image

Revisited Brave News Customize UI
image

@stephendonner
Copy link

stephendonner commented Dec 9, 2022

Verified PASSED using

Brave 1.46.141 Chromium: 108.0.5359.99 (Official Build) (x86_64)
Revision 410951fc34bb4b2cbf182231f9f779efaafaf682-refs/branch-heads/5359_71@{#9}
OS macOS Version 13.1 (Build 22C65)

Steps:

  1. installed 1.46.141
  2. launched Brave
  3. opened a new-tab page
  4. scrolled down
  5. opted in to Brave News
  6. clicked on Customize
  7. clicked on Brave News
  8. clicked Follow on CNN
  9. reopened the Customize Brave News dialog

Confirmed no crash when opening the Brave News dialog after following a source

example example example example
Screenshot 2022-12-09 at 10 15 53 AM Screenshot 2022-12-09 at 10 16 01 AM Screenshot 2022-12-09 at 10 16 07 AM Screenshot 2022-12-09 at 10 16 15 AM

Verification PASSED on

Brave | 1.46.141 Chromium: 108.0.5359.99 (Official Build) (64-bit)
-- | --
Revision | 410951fc34bb4b2cbf182231f9f779efaafaf682-refs/branch-heads/5359_71@{#9}
OS | Windows 10 Version 21H2 (Build 19044.2251)

Steps:

  1. installed 1.46.141
  2. launched Brave
  3. opened a new-tab page
  4. scrolled down
  5. opted in to Brave News
  6. clicked on Customize
  7. clicked on Brave News
  8. clicked Follow on CNN
  9. reopened the Customize Brave News dialog

Confirmed no crash when opening the Brave News dialog after following a source

example example example example
image image image image

@GeetaSarvadnya GeetaSarvadnya added QA/In-Progress Indicates that QA is currently in progress for that particular issue QA Pass-Win64 and removed QA/In-Progress Indicates that QA is currently in progress for that particular issue labels Dec 12, 2022
@rebron rebron removed this from Completed in General Dec 15, 2022
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.

8 participants