Got ANR when open links in Chrome custom tab then press back

66 views
Skip to first unread message

Hoa Vu

unread,
Jul 23, 2017, 7:22:53 PM7/23/17
to android-platform
Hi all, 
My application opens links in a CustomTab. Sometimes when I press back button, I an ANR dialog. I tried to investigate the ANR traces and it seems to me that com.android.server.am.ActivityManagerService is the one causing the issue, (but I am not sure). I attach the full ANR traces below. I would really appreciate if you could suggest me how should I debug this ANR case. 

"Binder_10" prio=5 tid=92 Suspended

  | group="main" sCount=1 dsCount=0 obj=0x13993080 self=0x558cbe4130

  | sysTid=8974 nice=0 cgrp=apps sched=0/0 handle=0x7f8bb14000

  | state=S schedstat=( 187464064234 111989854465 573201 ) utm=14517 stm=4229 core=5 HZ=100

  | stack=0x7f881c6000-0x7f881c8000 stackSize=1012KB

  | held mutexes=

  at java.util.ArrayList.get(ArrayList.java:310)

  at com.android.server.AlarmManagerService.removeLocked(AlarmManagerService.java:1796)

  at com.android.server.AlarmManagerService.setImplLocked(AlarmManagerService.java:1233)

  at com.android.server.AlarmManagerService.rebatchAllAlarmsLocked(AlarmManagerService.java:674)

  at com.android.server.AlarmManagerService.removeLocked(AlarmManagerService.java:1807)

  at com.android.server.AlarmManagerService.setImplLocked(AlarmManagerService.java:1233)

  at com.android.server.AlarmManagerService.setImpl(AlarmManagerService.java:1222)

  - locked <0x0c7256cd> (a java.lang.Object)

  at com.android.server.AlarmManagerService$3.set(AlarmManagerService.java:1282)

  at android.app.IAlarmManager$Stub.onTransact(IAlarmManager.java:83)

  at android.os.Binder.execTransact(Binder.java:451)


"JDWP" daemon prio=5 tid=10 Suspended

  | group="system" sCount=1 dsCount=0 obj=0x12c6b080 self=0x558c7e8f00

  | sysTid=20216 nice=0 cgrp=apps sched=0/0 handle=0x7fa36a1000

  | state=S schedstat=( 1442834814 222169029 1333 ) utm=142 stm=2 core=1 HZ=100

  | stack=0x7fa35a5000-0x7fa35a7000 stackSize=1012KB

  | held mutexes=

  kernel: __switch_to+0x74/0x8c

  kernel: futex_wait_queue_me+0xcc/0x158

  kernel: futex_wait+0x120/0x20c

  kernel: do_futex+0x184/0xa48

  kernel: SyS_futex+0x88/0x19c

  kernel: cpu_switch_to+0x48/0x4c

  native: #00 pc 00017710  /system/lib64/libc.so (syscall+28)

  native: #01 pc 000d1cc4  /system/lib64/libart.so (art::ConditionVariable::Wait(art::Thread*)+140)

  native: #02 pc 001bca88  /system/lib64/libart.so (art::gc::space::RosAllocSpace::InspectAllRosAlloc(void (*)(void*, void*, unsigned long, void*), void*, bool)+2292)

  native: #03 pc 001bcb1c  /system/lib64/libart.so (art::gc::space::RosAllocSpace::GetObjectsAllocated()+28)

  native: #04 pc 00191470  /system/lib64/libart.so (art::gc::Heap::GetObjectsAllocated() const+52)

  native: #05 pc 0012e05c  /system/lib64/libart.so (art::Dbg::DdmSendHeapInfo(art::Dbg::HpifWhen)+1276)

  native: #06 pc 0012e590  /system/lib64/libart.so (art::Dbg::DdmHandleHpifChunk(art::Dbg::HpifWhen)+152)

  native: #07 pc 000f6d98  /data/dalvik-cache/arm64/system@framework@boot.oat (Java_org_apache_harmony_dalvik_ddmc_DdmVmInternal_heapInfoNotify__I+144)

  at org.apache.harmony.dalvik.ddmc.DdmVmInternal.heapInfoNotify!(Native method)

  at android.ddm.DdmHandleHeap.handleHPIF(DdmHandleHeap.java:118)

  at android.ddm.DdmHandleHeap.handleChunk(DdmHandleHeap.java:85)

  at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)


 

"Binder_C" prio=5 tid=88 Blocked

  | group="main" sCount=1 dsCount=0 obj=0x134f54a0 self=0x558ca5c440

  | sysTid=8963 nice=0 cgrp=apps sched=0/0 handle=0x7f8bc6f000

  | state=S schedstat=( 191260043270 112847460600 578231 ) utm=14754 stm=4372 core=7 HZ=100

  | stack=0x7f885be000-0x7f885c0000 stackSize=1012KB

  | held mutexes=

  at com.android.server.am.ActivityManagerService.finishReceiver(ActivityManagerService.java:17559)

  - waiting to lock <0x2112464f> (a com.android.server.am.ActivityManagerService) held by thread 73

  at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:477)

  at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2664)

  at android.os.Binder.execTransact(Binder.java:451)



Here is the code: 

webView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request){
        String url = request.getUrl().toString();
        if(url.startWith("http://my.domain.name"))//let webview handles these
          return false;
        else{
            CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
            builder.setToolbarColor(getResources().getColor(R.color.colorPrimary));
            builder.setStartAnimations(getActivity(), R.anim.slide_in_right, R.anim.slide_out_left);
            builder.setExitAnimations(getActivity(), R.anim.slide_in_left, R.anim.slide_out_right);
            Intent actionIntent = new Intent(
                                getApplicationContext(), ActionBroadcastReceiver.class);
            actionIntent.setData(Uri.parse(url));
            PendingIntent menuItemPendingIntent =
                                PendingIntent.getBroadcast(getApplicationContext(), 0, actionIntent, 0);
            builder.addMenuItem(getString(R.string.action_share), menuItemPendingIntent);
            CustomTabsIntent customTabsIntent = builder.build();
            customTabsIntent.launchUrl(getActivity(), Uri.parse(url));

            return true;
        }
    }
});
custome_tabs_anr.txt
Reply all
Reply to author
Forward
0 new messages