In the dev console I'm getting ANRs on various 4.x Android versions 
apparently due to AlarmManager
calls (set, cancel) from the UI thread hanging.

Here's my app trace from the console, triggered by a location listener 
change:

"main" prio=5 tid=1 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41667e40 self=0x4158a510
| sysTid=23105 nice=0 sched=0/0 cgrp=apps handle=1074155860
| state=S schedstat=( 0 0 0 ) utm=265 stm=70 core=0
#00 pc 00020660 /system/lib/libc.so (__ioctl+8)
#01 pc 0002cf77 /system/lib/libc.so (ioctl+14)
#02 pc 0001d3ed /system/lib/libbinder.so 
(android::IPCThreadState::talkWithDriver(bool)+140)
....
at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:154)
at android.app.AlarmManager.setImpl(AlarmManager.java:363)
at android.app.AlarmManager.set(AlarmManager.java:191)
at net.dinglisch.android.taskerm.ahu.b((null):-1)
at net.dinglisch.android.taskerm.ahu.a((null):-1)
at net.dinglisch.android.taskerm.ahu.a((null):-1)
at net.dinglisch.android.taskerm.ahu.a((null):-1)
at net.dinglisch.android.taskerm.MonitorService.a((null):-1)
at net.dinglisch.android.taskerm.MonitorService.b((null):-1)
at net.dinglisch.android.taskerm.ahr.a((null):-1)
at net.dinglisch.android.taskerm.ahr.d((null):-1)
at net.dinglisch.android.taskerm.ahr.d((null):-1)
at net.dinglisch.android.taskerm.ea.onLocationChanged((null):-1)
...

I'm not sure the difference between a 'MONITOR' and a 'NATIVE' thread, but 
in
the traces below it looks like the UI thread and several Android services 
are all
hanging waiting for a lock held by Binder_2, which is SUSPENDED (bottom of 
list).

Anyone seeing similar traces ? I think maybe a common 'thread' is that
there's a high load on the system at the time caused by background services.
But surely that wouldn't delay the AlarmManager calls for 10 seconds !?

TIA,

Pent

"main" prio=5 tid=1 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x41667e40 self=0x4158a510
| sysTid=924 nice=-2 sched=0/0 cgrp=apps handle=1074155860
| state=S schedstat=( 0 0 0 ) utm=9864 stm=2174 core=1
at 
com.android.server.AlarmManagerService.remove(AlarmManagerService.java:~725)
- waiting to lock <0x42723dd8> (a java.lang.Object) held by tid=9 (Binder_2)
at android.app.AlarmManager.cancel(AlarmManager.java:479)
at 
com.android.server.IdleMaintenanceService.unscheduleUpdateIdleMaintenanceState(IdleMaintenanceService.java:159)
at 
com.android.server.IdleMaintenanceService.onReceive(IdleMaintenanceService.java:302)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at com.android.server.ServerThread.initAndLoop(SystemServer.java:1320)
at com.android.server.SystemServer.main(SystemServer.java:1485)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
`
"WifiService" prio=5 tid=38 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x42b65dd0 self=0x63cac3e0
| sysTid=1041 nice=0 sched=0/0 cgrp=apps handle=1674233912
| state=S schedstat=( 0 0 0 ) utm=267 stm=48 core=0
at 
com.android.server.AlarmManagerService.remove(AlarmManagerService.java:~725)
- waiting to lock <0x42723dd8> (a java.lang.Object) held by tid=9 (Binder_2)
at android.app.AlarmManager.cancel(AlarmManager.java:479)
at 
com.android.server.wifi.WifiController$DefaultState.processMessage(WifiController.java:324)
...

"Binder_3" prio=5 tid=47 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x42942c48 self=0x620c89f0
| sysTid=1204 nice=0 sched=0/0 cgrp=apps handle=1644379440
| state=S schedstat=( 0 0 0 ) utm=53871 stm=3892 core=1
at com.android.server.AlarmManagerService.set(AlarmManagerService.java:~561)
- waiting to lock <0x42723dd8> (a java.lang.Object) held by tid=9 (Binder_2)
at com.android.server.AlarmManagerService.set(AlarmManagerService.java:520)
at android.app.IAlarmManager$Stub.onTransact(IAlarmManager.java:75)
at android.os.Binder.execTransact(Binder.java:404)
at dalvik.system.NativeStart.run(Native Method)

"Binder_2" prio=5 tid=9 SUSPENDED
| group="main" sCount=1 dsCount=0 obj=0x41f24d00 self=0x5b45a250
| sysTid=935 nice=0 sched=0/0 cgrp=apps handle=1531289608
| state=S schedstat=( 0 0 0 ) utm=53511 stm=3877 core=1
at java.util.ArrayList.size(ArrayList.java:~319)
at 
com.android.server.AlarmManagerService$Batch.remove(AlarmManagerService.java:190)
at 
com.android.server.AlarmManagerService.removeLocked(AlarmManagerService.java:734)
at 
com.android.server.AlarmManagerService.setImplLocked(AlarmManagerService.java:578)
at 
com.android.server.AlarmManagerService.rebatchAllAlarmsLocked(AlarmManagerService.java:400)
at 
com.android.server.AlarmManagerService.removeLocked(AlarmManagerService.java:744)
at 
com.android.server.AlarmManagerService.setImplLocked(AlarmManagerService.java:578)
at com.android.server.AlarmManagerService.set(AlarmManagerService.java:568)
at com.android.server.AlarmManagerService.set(AlarmManagerService.java:520)
at android.app.IAlarmManager$Stub.onTransact(IAlarmManager.java:75)
at android.os.Binder.execTransact(Binder.java:404)
at dalvik.system.NativeStart.run(Native Method)

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to