android inputdispatcher deadlock问题

T-Quake 2011-09-16 04:56:36
大家好,我最近遇到一个zygote crash的问题。经过我对log的分析,发现是因为inputdispatcher死锁导致的。然后我跟踪了ANR的信息,发现这么个锁的情况。
"ActivityManager" prio=5 tid=11 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x405054f0 self=0x333e50
| sysTid=258 nice=-2 sched=0/0 cgrp=default handle=3358728
at com.android.server.am.ActivityManagerService$2.handleMessage(ActivityManagerService.java:~1201)
- waiting to lock <0x40505700> (a com.android.server.am.ActivityManagerService) held by threadid=25 (InputDispatcher)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at com.android.server.am.ActivityManagerService$AThread.run(ActivityManagerService.java:1515)


"InputDispatcher" prio=10 tid=25 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x408bc4c8 self=0x64d428
| sysTid=273 nice=-8 sched=0/0 cgrp=default handle=6592704
at com.android.server.PackageManagerService.getPackageInfo(PackageManagerService.java:~1423)
- waiting to lock <0x405bd1a0> (a java.util.HashMap) held by threadid=51 (Binder Thread #12)
at com.android.server.am.ActivityManagerService.appendDropBoxProcessHeaders(ActivityManagerService.java:7170)
at com.android.server.am.ActivityManagerService.addErrorToDropBox(ActivityManagerService.java:7221)
at com.android.server.am.ActivityManagerService.appNotResponding(ActivityManagerService.java:3231)
at com.android.server.am.ActivityRecord.keyDispatchingTimedOut(ActivityRecord.java:567)
at com.android.server.WindowManagerService$InputMonitor.notifyANR(WindowManagerService.java:5390)
at com.android.server.InputManager$Callbacks.notifyANR(InputManager.java:416)
at dalvik.system.NativeStart.run(Native Method)


"Binder Thread #12" prio=5 tid=51 NATIVE --》最后跟到这
| group="main" sCount=1 dsCount=0 obj=0x4075ac80 self=0x359468
| sysTid=423 nice=-20 sched=0/0 cgrp=default handle=5168400

at org.apache.harmony.luni.platform.OSFileSystem.write(Native Method)
at dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:171)
at java.io.FileOutputStream.write(FileOutputStream.java:300)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:164)
at java.io.OutputStreamWriter.convert(OutputStreamWriter.java:236)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:225)
at java.io.PrintWriter.doWrite(PrintWriter.java:690)
at java.io.PrintWriter.write(PrintWriter.java:665)
at java.io.PrintWriter.write(PrintWriter.java:640)
at java.io.PrintWriter.write(PrintWriter.java:708)
at java.io.PrintWriter.print(PrintWriter.java:468)
at com.android.server.PackageManagerService$ActivityIntentResolver.dumpFilter(PackageManagerService.java:4345)
at com.android.server.PackageManagerService$ActivityIntentResolver.dumpFilter(PackageManagerService.java:4209)
at com.android.server.IntentResolver.dumpMap(IntentResolver.java:120)
at com.android.server.IntentResolver.dump(IntentResolver.java:149)
at com.android.server.PackageManagerService.dump(PackageManagerService.java:7330)
at android.os.Binder.dump(Binder.java:256)
at android.os.Binder.onTransact(Binder.java:224)
at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:1097)
at com.android.server.PackageManagerService.onTransact(PackageManagerService.java:1113)
at android.os.Binder.execTransact(Binder.java:336)
at dalvik.system.NativeStart.run(Native Method)

最后 发现 是因为binder貌似 在写(write的时候占用了很长时间),我想问下什么情况下会出现这种情况,如何去解决 谢谢
...全文
654 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Judy889 2011-12-29
  • 打赏
  • 举报
回复
请问有解决方法了吗?
T-Quake 2011-09-20
  • 打赏
  • 举报
回复
没有任何回应?再等24小时,唉 不然结贴了
T-Quake 2011-09-19
  • 打赏
  • 举报
回复
有知道的吗?唉!

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧