由Ctrl+Z引发的系统卡死重启问题分析

文章详细分析了一个由于使用Ctrl+Z命令导致的Android系统卡死并重启的问题。在Monkey测试中,Ctrl+Z挂起了am进程,使得系统server在调用ActivityController接口时被阻塞,进而触发watchdog线程卡死,无法在规定时间内重启。作者探讨了Linux下Ctrl+Z和Ctrl+C的区别,并指出系统watchdog机制的改进方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因

JT同学拿着手机来找我说用着用着自动重启了,让我看一下,我抓出bugreport一看是system server发生watchdog重启了,然后接着看了一下traces,发现traces比较诡异。

初步分析

为什么说traces诡异?暂且一看

traces中的线程状态

都被thread 31持有的锁给block了,那就看看thread 31在搞什么飞机?

"InputDispatcher" prio=10 tid=31 Native
  | group="main" sCount=1 dsCount=0 obj=0x133d90a0 self=0x7f73f8c800
  | sysTid=1662 nice=-8 cgrp=default sched=0/0 handle=0x7f5f80b440
  | state=S schedstat=( 1388341757 1177043722 12975 ) utm=81 stm=57 core=2 HZ=100
  | stack=0x7f5f70f000-0x7f5f711000 stackSize=1013KB
  | held mutexes=
  kernel: (couldn't read /proc/self/task/1662/stack)
  native: #00 pc 00000000000684e0  /system/lib64/libc.so (__ioctl+4)
  native: #01 pc 0000000000072508  /system/lib64/libc.so (ioctl+100)
  native: #02 pc 000000000002d584  /system/lib64/libbinder.so (_ZN7android14IPCThreadState14talkWithDriverEb+164)
  native: #03 pc 000000000002e050  /system/lib64/libbinder.so (_ZN7android14IPCThreadState15waitForResponseEPNS_6ParcelEPi+104)
  native: #04 pc 000000000002e2c4  /system/lib64/libbinder.so (_ZN7android14IPCThreadState8transactEijRKNS_6ParcelEPS1_j+176)
  native: #05 pc 0000000000025654  /system/lib64/libbinder.so (_ZN7android8BpBinder8transactEjRKNS_6ParcelEPS1_j+64)
  native: #06 pc 00000000000e02cc  /system/lib64/libandroid_runtime.so (???)
  native: #07 pc 0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值