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

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 有卷积神经网络识别害虫的项目吗
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件