Hi All,
I'm facing issue of deadlock in system_server Process.
Trace file logs,
11-22 16:51:57.010 503 644 W Watchdog: *** WATCHDOG NOT KILLING SYSTEM PROCESS:
----- pid 503 at 2012-11-22 16:51:54 -----
Cmd line: system_server
"android.server.ServerThread" prio=5 tid=12 MONITOR
group="main" sCount=1 dsCount=0 obj=0x414c8c10 self=0x491c8928 |
sysTid=517 nice=-2 sched=0/0 cgrp=apps handle=1361196144 |
schedstat=( 0 0 0 ) utm=20514 stm=5949 core=0 at com.android.server.am.ActivityManagerService.monitor(ActivityManagerService.java:~15219)- waiting to lock <0x414d2cf0> (a com.android.server.am.ActivityManagerService) held by tid=28 (InputDispatcher)
at com.android.server.Watchdog$HeartbeatHandler.handleMessage(Watchdog.java:134) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at com.android.server.ServerThread.run(SystemServer.java:907)
|
"InputDispatcher" prio=10 tid=28 MONITOR
group="main" sCount=1 dsCount=0 obj=0x417c5e70 self=0x50dd6008 |
sysTid=539 nice=-8 sched=0/0 cgrp=apps handle=1306828184 |
schedstat=( 0 0 0 ) utm=15529 stm=13434 core=0 at com.android.server.wm.WindowManagerService.prepareAppTransition(WindowManagerService.java:~3897)- waiting to lock <0x41670338> (a java.util.HashMap) held by tid=77 (Binder_C)
at com.android.server.am.ActivityStack.updateTransitLocked(ActivityStack.java:4133) at com.android.server.am.ActivityStack.moveTaskToFrontLocked(ActivityStack.java:4193) at com.android.server.am.ActivityStack.startActivityUncheckedLocked(ActivityStack.java:2704) at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:2566) at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:3114) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:2374) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1411) at android.app.ContextImpl.startActivity(ContextImpl.java:899) at android.app.ContextImpl.startActivity(ContextImpl.java:888) at com.android.internal.policy.impl.PhoneWindowManager.interceptKeyBeforeDispatching(PhoneWindowManager.java:2011) at com.android.server.wm.InputMonitor.interceptKeyBeforeDispatching(InputMonitor.java:310) at com.android.server.input.InputManagerService.interceptKeyBeforeDispatching(InputManagerService.java:1259) at dalvik.system.NativeStart.run(Native Method)
|
"Binder_C" prio=5 tid=77 MONITOR
group="main" sCount=1 dsCount=0 obj=0x41ad6f70 self=0x513ac038 |
sysTid=15352 nice=0 sched=0/0 cgrp=apps handle=1360639152 |
schedstat=( 0 0 0 ) utm=9164 stm=4626 core=0 at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:~3026)- waiting to lock <0x414d2cf0> (a com.android.server.am.ActivityManagerService) held by tid=28 (InputDispatcher)
at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:2374) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1411) at android.app.ContextImpl.startActivity(ContextImpl.java:899) at android.app.ContextImpl.startActivity(ContextImpl.java:888) at com.android.internal.policy.impl.PhoneWindowManager.interceptKeyBeforeDispatching(PhoneWindowManager.java:2011) at com.android.server.wm.InputMonitor.interceptKeyBeforeDispatching(InputMonitor.java:310) at com.android.server.input.InputManagerService.interceptKeyBeforeDispatching(InputManagerService.java:1259) at com.android.server.input.InputManagerService.nativeUnregisterInputChannel(Native Method) at com.android.server.input.InputManagerService.unregisterInputChannel(InputManagerService.java:414) at com.android.server.wm.WindowState.disposeInputChannel(WindowState.java:841) at com.android.server.wm.WindowManagerService.removeWindowLocked(WindowManagerService.java:2395) at com.android.server.wm.WindowManagerService.removeWindow(WindowManagerService.java:2381) at com.android.server.wm.Session.remove(Session.java:149) at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:124) at com.android.server.wm.Session.onTransact(Session.java:111) at android.os.Binder.execTransact(Binder.java:367) at dalvik.system.NativeStart.run(Native Method)
|
Here, the deadlock happened between "mWindowMap" and "mService" objects.
As far as my knowledge, to solve this issue,
either 1) We need to change the sequence of the both the locks,
or 2) We need to remove one of those lock.
Could you please help me out on this Deadlock issue?
Thanks,
Maunik