feel_inn 2018-05-26 08:11 采纳率: 0%
浏览 971
已结题

android system_server GC线程卡死

andorid机器显示是卡死.但是终端可以输命令,故底层没有死机.

输入:top -t -m 5
结果显示System_server进程的GC线程一直占用50%
图片说明
是system_server的GC线程卡住.由于android系统再GC时会挂起其他的线程,故造成andorid上层假死机的现象.

查询命令:debuggred -B 205(system_server进程号)
此命令可以打印出进程中所有线程的当前访问时的cpu执行代码地址.我们执行了300次,取得当前卡死的机器,system_server进程的GC线程执行情况:
"GC" sysTid=208
#00 pc 0007247a /system/lib/libdvm.so (mspace_inspect_all+103)
#01 pc 000726fd /system/lib/libdvm.so
#02 pc 000727a1 /system/lib/libdvm.so
#03 pc 00054969 /system/lib/libdvm.so
#04 pc 0000d248 /system/lib/libc.so (__thread_entry+72)
#05 pc 0000d3e0 /system/lib/libc.so (pthread_create+240)
通过命令:arm-eabi-addr2line -e out/target/product/panther_b20b/symbols/system/lib/libdvm.so -f -C 0007247a
执行结果:internal_inspect_all

/work/source/B20B/dalvik/vm/alloc/../../../bionic/libc/upstream-dlmalloc/malloc.c:5175

此命令是根据pc的地址,可以定位具体再libdvm.so的哪行代码.通过此方法我们对300个地址进行了去重复的操作,最后得出的结果:

/home/wuheng/work/b20b/dalvik/vm/alloc/../../../bionic/libc/upstream-dlmalloc/malloc.c:5174
/home/wuheng/work/b20b/dalvik/vm/alloc/../../../bionic/libc/upstream-dlmalloc/malloc.c:5175
/home/wuheng/work/b20b/dalvik/vm/alloc/../../../bionic/libc/upstream-dlmalloc/malloc.c:5180
/home/wuheng/work/b20b/dalvik/vm/alloc/../../../bionic/libc/upstream-dlmalloc/malloc.c:5181
/home/wuheng/work/b20b/dalvik/vm/alloc/../../../bionic/libc/upstream-dlmalloc/malloc.c:5192
/home/wuheng/work/b20b/dalvik/vm/alloc/../../../bionic/libc/upstream-dlmalloc/malloc.c:5194
当时卡死的车机,发现是GC时,一直再这些行的代码上进行死循环的跑.没有能break出来.

具体的代码:
图片说明

请大神帮忙分析以下,为什么在此while里面没有break出来,谢谢.

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2018-05-26 11:25
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog