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

ANR on a search widget #27903

Closed
SergeyZhukovsky opened this issue Jan 19, 2023 · 2 comments · Fixed by brave/brave-core#16751
Closed

ANR on a search widget #27903

SergeyZhukovsky opened this issue Jan 19, 2023 · 2 comments · Fixed by brave/brave-core#16751
Assignees
Labels
crash OS/Android Fixes related to Android browser functionality priority/P2 A bad problem. We might uplift this to the next planned release. QA Pass - Android ARM QA/Yes release-notes/include

Comments

@SergeyZhukovsky
Copy link
Member

SergeyZhukovsky commented Jan 19, 2023

I found that ANR in GPS on 1.47.x stable channel. It happens here https://github.com/brave/brave-core/blob/1.47.x/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java#L1060, we can execute it with a post task when all UI redrawing isn't happening to decrease main thread overload on URL focus.

  #00  pc 0x00000000000a1bd8  /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+8)
  #01  pc 0x000000000005b828  /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156)
  #02  pc 0x0000000000054070  /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+292)
  #03  pc 0x00000000000552ac  /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+64)
  #04  pc 0x0000000000054ff0  /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+224)
  #05  pc 0x000000000004cafc  /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+196)
  #06  pc 0x0000000000168d3c  /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+156)
  at android.os.BinderProxy.transactNative (BinderProxy.java)
  at android.os.BinderProxy.transact (BinderProxy.java:571)
  at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.isRequestPinAppWidgetSupported (IAppWidgetService.java:1458)
  at android.appwidget.AppWidgetManager.isRequestPinAppWidgetSupported (AppWidgetManager.java:1204)
  at org.chromium.chrome.browser.widget.quickactionsearchandbookmark.utils.BraveSearchWidgetUtils$$InternalSyntheticApiModelOutline$1$219f055c23cd4850a3bfc8273f0cb7812b1f5e1937b308f3b7e6c0bae8531dc1$0.m (BraveSearchWidgetUtils.java:1)
  at org.chromium.chrome.browser.widget.quickactionsearchandbookmark.utils.BraveSearchWidgetUtils.isRequestPinAppWidgetSupported (BraveSearchWidgetUtils.java:39)
  at org.chromium.chrome.browser.widget.quickactionsearchandbookmark.utils.BraveSearchWidgetUtils.getShouldShowWidgetPromo (BraveSearchWidgetUtils.java:28)
  at org.chromium.chrome.browser.widget.quickactionsearchandbookmark.promo.SearchWidgetPromoPanel.showIfNeeded (SearchWidgetPromoPanel.java:46)
  at org.chromium.chrome.browser.toolbar.top.BraveToolbarLayoutImpl.onUrlFocusChange (BraveToolbarLayoutImpl.java:1060)
  at org.chromium.chrome.browser.toolbar.top.ToolbarPhone.onUrlFocusChange (ToolbarPhone.java:2011)
  at org.chromium.chrome.browser.toolbar.top.BraveTopToolbarCoordinator.b (BraveTopToolbarCoordinator.java:3)
  at org.chromium.chrome.browser.toolbar.ToolbarManager.onUrlFocusChange (ToolbarManager.java:1699)
  at org.chromium.chrome.browser.omnibox.LocationBarMediator.handleUrlFocusAnimation (LocationBarMediator.java:666)
  at org.chromium.chrome.browser.omnibox.LocationBarMediator.onUrlFocusChange (LocationBarMediator.java:294)
  at org.chromium.chrome.browser.omnibox.LocationBarCoordinator$$InternalSyntheticLambda$4$0134c155d3c853a6a1247ac6ee48c13445fd5fee03c38307cc27db6a1d6a5032$0.onResult$bridge (LocationBarCoordinator.java:116)
  at org.chromium.base.CallbackController$CancelableCallback.onResult (CallbackController.java:105)
  at org.chromium.chrome.browser.omnibox.UrlBarCoordinator.onUrlFocusChangeInternal (UrlBarCoordinator.java:298)
  at org.chromium.chrome.browser.omnibox.UrlBarCoordinator$$InternalSyntheticLambda$5$6bfc234b05bb0d78bdd82926159e4ea90018c4a6f6a72fee671ce17a51645698$1.onResult (UrlBarCoordinator.java:55)
  at org.chromium.chrome.browser.omnibox.UrlBarMediator.onUrlFocusChange (UrlBarMediator.java:218)
  at org.chromium.chrome.browser.omnibox.UrlBarMediator$$InternalSyntheticLambda$6$c9693cfe2dd9d479be3affe326ca92b3c16a105028cf7c8ac7db04739f1ec27d$0.onResult (UrlBarMediator.java:42)
  at org.chromium.chrome.browser.omnibox.UrlBarViewBinder.lambda$bind$0 (UrlBarViewBinder.java:55)
  at org.chromium.chrome.browser.omnibox.UrlBarViewBinder$$InternalSyntheticLambda$6$d94fd4e798a89dbac0b1bae36043f9e9279e392b572bf5a463c4925679ba2ab1$0.onFocusChange (UrlBarViewBinder.java:15)
  at android.view.View.onFocusChanged (View.java:8135)
  at android.widget.TextView.onFocusChanged (TextView.java:11107)
  at org.chromium.chrome.browser.omnibox.AutocompleteEditText.onFocusChanged (AutocompleteEditText.java:189)
  at org.chromium.chrome.browser.omnibox.UrlBar.onFocusChanged (UrlBar.java:319)
  at org.chromium.chrome.browser.omnibox.UrlBar.onFocusChanged (UrlBar.java:1)
  at android.view.View.handleFocusGainInternal (View.java:7805)
  at android.view.View.requestFocusNoSearch (View.java:13601)
  at android.view.View.requestFocus (View.java:13575)
  at android.view.View.requestFocus (View.java:13542)
  at android.view.View.requestFocus (View.java:13484)
  at org.chromium.chrome.browser.omnibox.UrlBar$1.onSingleTapUp (UrlBar.java:254)
  at android.view.GestureDetector.onTouchEvent (GestureDetector.java:748)
  at org.chromium.chrome.browser.omnibox.UrlBar.onTouchEvent (UrlBar.java:440)
  at org.chromium.chrome.browser.omnibox.UrlBar.onTouchEvent (UrlBar.java:1)
  at android.view.View.dispatchTouchEvent (View.java:14601)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3120)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2801)
  at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:534)
  at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1925)
  at android.app.Activity.dispatchTouchEvent (Activity.java:4298)
  at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:70)
  at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:1)
  at java.lang.reflect.Method.invoke (Method.java)
  at org.chromium.base.ApplicationStatus$WindowCallbackProxy.invoke (ApplicationStatus.java:246)
  at java.lang.reflect.Proxy.invoke (Proxy.java:1006)
  at android.view.Window$Callback.dispatchTouchEvent (Window.java)
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:492)
  at android.view.View.dispatchPointerEvent (View.java:14884)
  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:6497)
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:6298)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5776)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5833)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5799)
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:5964)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5807)
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:6021)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5780)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5833)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5799)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5807)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5780)
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:8793)
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:8709)
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:8678)
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:8929)
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:266)
  at android.os.MessageQueue.nativePollOnce (MessageQueue.java)
  at android.os.MessageQueue.next (MessageQueue.java:342)
  at android.os.Looper.loopOnce (Looper.java:170)
  at android.os.Looper.loop (Looper.java:329)
  at android.app.ActivityThread.main (ActivityThread.java:8063)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1026)

STR/Cases:

Quickly talked to @SergeyZhukovsky, QA just needs to ensure that tapping on the omnibox with a new profile still launches the widget onboarding without any issues.

@kjozwiak
Copy link
Member

The above requires 1.47.178 or higher for 1.47.x verification 👍

@Uni-verse
Copy link
Contributor

Verified on Samsung Galaxy S21 using version:

Brave	1.47.181 Chromium: 109.0.5414.87 (Official Build) (64-bit) 
Revision	2dc18eb511c56e012081b4abc9e38c81c885f7d4-refs/branch-heads/5414@{#1241}
OS	Android 13; Build/TP1A.220624.014

Based on STR/Cases in #27903 (comment)

  • Verified tapping on omnibox with new profile launches widget onboarding
Example Example Example
screenshot-1674495436133 screenshot-1674495515415 screenshot-1674495523074

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crash OS/Android Fixes related to Android browser functionality priority/P2 A bad problem. We might uplift this to the next planned release. QA Pass - Android ARM QA/Yes release-notes/include
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants