常见的UIWDT bug分析案例(1)

     Step 1: According the log:
     android.display- waiting to lock tid=13
     "android.fg" prio=5 tid=13 Blocked
  | group="main" sCount=1 dsCount=0 obj=0x12cce900 self=0x6d2b8c00
  | sysTid=651 nice=0 cgrp=default sched=0/0 handle=0x60151930
  | state=S schedstat=( 2783064748 1301129593 5898 ) utm=128 stm=150 core=1 HZ=100
  | stack=0x6004f000-0x60051000 stackSize=1038KB
  | held mutexes=
  at com.android.server.am.ActivityManagerService.monitor(ActivityManagerService.java:19743)
  - waiting to lock <0x0a24b828> (a com.android.server.am.ActivityManagerService) held by thread 26
  at com.android.server.Watchdog$HandlerChecker.run(Watchdog.java:178)
  at android.os.Handler.handleCallback(Handler.java:739)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:148)
  at android.os.HandlerThread.run(HandlerThread.java:61)
  at com.android.server.ServiceThread.run(ServiceThread.java:46)




     Step 2:
     I found waiting to lock <0x0a24b828> (a com.android.server.am.ActivityManagerService) held by thread 26

     "InputDispatcher" prio=10 tid=26 Native
  | group="main" sCount=1 dsCount=0 obj=0x1300c0a0 self=0x5e44e400
  | sysTid=693 nice=-8 cgrp=default sched=0/0 handle=0x5b086930
  | state=S schedstat=( 93760988115 21401929076 301072 ) utm=4700 stm=4676 core=2 HZ=100
  | stack=0x5af8a000-0x5af8c000 stackSize=1014KB
  | held mutexes=
  kernel: binder_thread_read+0x38e/0xb97
  kernel: binder_ioctl+0x36c/0x770
  kernel: do_vfs_ioctl+0x2e2/0x4d0
  kernel: SyS_ioctl+0x60/0x90
  kernel: sysenter_after_call+0x0/0x15
  native: #00 pc 00000ade  [vdso] (__kernel_vsyscall+14)
  native: #01 pc 000991f8  /system/lib/libc.so (__ioctl+24)
  native: #02 pc 000ab82b  /system/lib/libc.so (ioctl+43)
  native: #03 pc 00027c23  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+195)
  native: #04 pc 00028814  /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+132)
  native: #05 pc 00028abb  /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+171)
  native: #06 pc 0001d8ee  /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+78)
  native: #07 pc 000d8f9d  /system/lib/libandroid_runtime.so (???)
  native: #08 pc 010bc629  /system/framework/x86/boot.oat (Java_android_os_BinderProxy_transactNative__ILandroid_os_Parcel_2Landroid_os_Parcel_2I+221)
  native: #09 pc 8bfc81d1  ???
  native: #10 pc 9a9ee1b5  ???
  at android.os.BinderProxy.transactNative(Native method)
  at android.os.BinderProxy.transact(Binder.java:503)
  at android.app.IActivityController$Stub$Proxy.activityStarting(IActivityController.java:172)
  at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1618)
  at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1045)
  - locked <0x0a24b828> (a com.android.server.am.ActivityManagerService)
  at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3863)
  at android.app.ContextImpl.startActivityAsUser(ContextImpl.java:686)
  at android.app.ContextImpl.startActivityAsUser(ContextImpl.java:665)
  at com.android.server.policy.PhoneWindowManager.startActivityAsUser(PhoneWindowManager.java:3222)
  at com.android.server.policy.PhoneWindowManager.interceptKeyBeforeDispatching(PhoneWindowManager.java:3028)
  at com.android.server.wm.InputMonitor.interceptKeyBeforeDispatching(InputMonitor.java:375)
  at com.android.server.input.InputManagerService.interceptKeyBeforeDispatching(InputManagerService.java:1466)

 



 Step 3:
 As above tracebrack shows, AMS blocked at a binder transaction from 635:693.
 
 proc 635
  thread 693: l 10
    outgoing transaction 4249848: 84e19380 from 635:693 to 23473:23494 code 1 flags 10 pri -8 r1 node 1986461 size 444:0 data c5b80058

 



   Step 4:
   The process ID:23473  belonged to com.android.commands.monkey which encountered an ANR.
 
   12-15 00:06:11.956 23473 17200 W art     : Long monitor contention event with owner method=int com.android.commands.monkey.Monkey.runMonkeyCycles() from Monkey.java:1040 waiters=0 for 6.646s
   12-15 00:06:11.960 23473 17200 I dvm_lock_sample: [com.android.commands.monkey,1,Binder_19,6646,Monkey.java,330,-,1040,100]
   12-15 00:06:49.367   635  1423 W InputManager: Input event injection from pid 23473 failed.
   12-15 00:08:10.758 23473 23489 I art     : Thread[2,tid=23489,WaitingInMainSignalCatcherLoop,Thread*=0x6f642000,peer=0x12c370a0,"Signal Catcher"]: reacting to signal 3

你可能感兴趣的:(常见的UIWDT bug分析案例(1))