Android10 设备死机的问题分析和解决

最近客户反馈一个问题,设备偶现死机。最后解决,在此记录。

目录

一死机的现象

二死机的类型

三 死机问题分析

1 死机现象的梳理

2 死机日志

1)日志分析一

2 日志分析二(正确方案)


一死机的现象

设备死机,或者黑屏任何操作无响应,无法点亮屏幕;或亮屏任何操作无响应。只能断电重启。

二死机的类型

  •    逻辑卡顿(block)
  •    死循环 (Deadloop)

  •   死锁 (Deadlock)

这次根据结果先说结论是 死锁导致死机。

三 死机问题分析

1 死机现象的梳理

客户反馈死机问题,暂无提供可复现的逻辑步骤,属于随机发生。这部使用monkey压测,出现死机行为,分析日志,每次都有不同,无法定位原因。

2 死机日志

1)日志分析一

1 开启了ylog开关后复现,都能捕获日志,有些日志就是普通的日志,有日志捕获死机日常。日志结构如下:

2 左侧文件夹traces就是死机log。分析log如下:

0-android.log日志文件中 看到进程全部挂掉,系统死亡。日志如下
M0164CC  11-21 11:50:59.424   366   366 I SPRDHWComposer: HWCDisplay::present_display <785>: No job to commit, return ERR_NO_JOB
M0164CD  11-21 11:50:59.417   249   249 I ServiceManager: service 'netstats' died
M0164CE  11-21 11:50:59.427   480  5944 D BufferPoolAccessor: bufferpool2 0xa7070110 : 0(0 size) total buffers - 0(0 size) used buffers - 7/10 (recycle/alloc) - 3/9 (fetch/transfer)
M0164CF  11-21 11:50:59.427   480  5939 D BufferPoolAccessor: bufferpool2 0xa706fe10 : 0(0 size) total buffers - 0(0 size) used buffers - 8/10 (recycle/alloc) - 2/9 (fetch/transfer)
M0164D0  11-21 11:50:59.427   480  5908 D BufferPoolAccessor: bufferpool2 0xa7070310 : 0(0 size) total buffers - 0(0 size) used buffers - 13/15 (recycle/alloc) - 2/14 (fetch/transfer)
M0164D1  11-21 11:50:59.427   249   249 I ServiceManager: service 'persistent_data_block' died
M0164D2  11-21 11:50:59.428   249   249 I ServiceManager: service 'netpolicy' died
M0164D3  11-21 11:50:59.428   249   249 I ServiceManager: service 'wifi' died
M0164D4  11-21 11:50:59.428   249   249 I ServiceManager: service 'wifiscanner' died
M0164D5  11-21 11:50:59.428   249   249 I ServiceManager: service 'wifip2p' died
M0164D6  11-21 11:50:59.428   249   249 I ServiceManager: service 'notification' died
M0164D7  11-21 11:50:59.428   249   249 I ServiceManager: service 'devicestoragemonitor' died
M0164D8  11-21 11:50:59.428   249   249 I ServiceManager: service 'location' died
M0164D9  11-21 11:50:59.428   249   249 I ServiceManager: service 'country_detector' died
M0164DA  11-21 11:50:59.428   249   249 I ServiceManager: service 'time_detector' died
M0164DB  11-21 11:50:59.428   249   249 I ServiceManager: service 'search' died
M0164DC  11-21 11:50:59.428   249   249 I ServiceManager: service 'wallpaper' died
M0164DD  11-21 11:50:59.428   249   249 I ServiceManager: service 'audio' died
M0164DE  11-21 11:50:59.429   249   249 I ServiceManager: service 'broadcastradio' died
M0164DF  11-21 11:50:59.429   249   249 I ServiceManager: service 'DockObserver' died
M0164E0  11-21 11:50:59.429   249   249 I ServiceManager: service 'midi' died
M0164E1  11-21 11:50:59.429   249   249 I ServiceManager: service 'adb' died
M0164E2  11-21 11:50:59.429   249   249 I ServiceManager: service 'usb' died
M0164E3  11-21 11:50:59.429   249   249 I ServiceManager: service 'serial' died
M0164E4  11-21 11:50:59.429   249   249 I ServiceManager: service 'hardware_properties' died
M0164E5  11-21 11:50:59.429   480   480 D BufferPoolAccessor: bufferpool2 0xa706fd10 : 0(0 size) total buffers - 0(0 size) used buffers - 5/7 (recycle/alloc) - 2/6 (fetch/transfer)
M0164E6  11-21 11:50:59.429   249   249 I ServiceManager: service 'color_display' died
M0164E7  11-21 11:50:59.429  5930  8561 I AudioTrack: pause
M0164E8  11-21 11:50:59.429   480   480 D BufferPoolAccessor: Destruction - bufferpool2 0xa706fd10 cached: 0/0M, 0/0% in use; allocs: 7, 71% recycled; transfers: 6, 67% unfetced
M0164E9  11-21 11:50:59.429   249   249 I ServiceManager: service 'jobscheduler' died
M0164EA  11-21 11:50:59.429   249   249 I ServiceManager: service 'soundtrigger' died
M0164EB  11-21 11:50:59.429   249   249 I ServiceManager: service 'trust' died
M0164EC  11-21 11:50:59.429   249   249 I ServiceManager: service 'backup' died
M0164ED  11-21 11:50:59.429   249   249 I ServiceManager: service 'appwidget' died
M0164EE  11-21 11:50:59.429   249   249 I ServiceManager: service 'role' died
M0164EF  11-21 11:50:59.429   249   249 I ServiceManager: service 'voiceinteraction' died
M0164F0  11-21 11:50:59.429   249   249 I ServiceManager: service 'diskstats' died
M0164F1  11-21 11:50:59.429   249   249 I ServiceManager: service 'runtime' died
M0164F2  11-21 11:50:59.429   480  5944 D BufferPoolAccessor: bufferpool2 0xa7070210 : 0(0 size) total buffers - 0(0 size) used buffers - 11/15 (recycle/alloc) - 4/14 (fetch/transfer)
M0164F3  11-21 11:50:59.429   249   249 I ServiceManager: service 'network_time_update_service' died
M0164F4  11-21 11:50:59.429   480  5944 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070210 cached: 0/0M, 0/0% in use; allocs: 15, 73% recycled; transfers: 14, 71% unfetced
M0164F5  11-21 11:50:59.429   249   249 I ServiceManager: service 'dreams' died
M0164F6  11-21 11:50:59.429   249   249 I ServiceManager: service 'graphicsstats' died
M0164F7  11-21 11:50:59.429   249   249 I ServiceManager: service 'print' died
M0164F8  11-21 11:50:59.429   249   249 I ServiceManager: service 'companiondevice' died
M0164F9  11-21 11:50:59.429   249   249 I ServiceManager: service 'restrictions' died
M0164FA  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_session' died
M0164FB  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_resource_monitor' died
M0164FC  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_router' died
M0164FD  11-21 11:50:59.429   249   249 I ServiceManager: service 'ledsrv' died
M0164FE  11-21 11:50:59.429   249   249 I ServiceManager: service 'shortcut' died
M0164FF  11-21 11:50:59.429   249   249 I ServiceManager: service 'launcherapps' died
M016500  11-21 11:50:59.429   249   249 I ServiceManager: service 'crossprofileapps' died
M016501  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_projection' died
M016502  11-21 11:50:59.430   249   249 I ServiceManager: service 'slice' died
M016503  11-21 11:50:59.430   249   249 I ServiceManager: service 'media.camera.proxy' died
M016504  11-21 11:50:59.430   249   249 I ServiceManager: service 'statscompanion' died
M016505  11-21 11:50:59.430   249   249 I ServiceManager: service 'incidentcompanion' died
M016506  11-21 11:50:59.430   249   249 I ServiceManager: service 'imms' died
M016507  11-21 11:50:59.430   249   249 I ServiceManager: service 'autofill' died
M016508  11-21 11:50:59.430   249   249 I ServiceManager: service 'clipboard' died
M016509  11-21 11:50:59.430   480  5939 D BufferPoolAccessor: bufferpool2 0xa7070010 : 0(0 size) total buffers - 0(0 size) used buffers - 6/11 (recycle/alloc) - 5/10 (fetch/transfer)
M01650A  11-21 11:50:59.430   249   249 I ServiceManager: service 'app_binding' died
M01650B  11-21 11:50:59.430   249   249 I ServiceManager: service 'sprd_power' died
M01650C  11-21 11:50:59.430   480  5939 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070010 cached: 0/0M, 0/0% in use; allocs: 11, 55% recycled; transfers: 10, 50% unfetced
M01650D  11-21 11:50:59.430   249   249 I ServiceManager: service 'sprdssense' died
M01650E  11-21 11:50:59.430   249   249 I ServiceManager: service 'bluetooth_manager' died
M01650F  11-21 11:50:59.430   249   249 I ServiceManager: service 'connmetrics' died
M016510  11-21 11:50:59.430   249   249 I ServiceManager: service 'netd_listener' died
M016511  11-21 11:50:59.430   249   249 I ServiceManager: service 'contexthub' died
M016512  11-21 11:50:59.430   249   249 I ServiceManager: service 'power_ex' died
M016513  11-21 11:50:59.430   249   249 I ServiceManager: service 'otadexopt' died
M016514  11-21 11:50:59.430   249   249 I ServiceManager: service 'user' died
M016515  11-21 11:50:59.430   249   249 I ServiceManager: service 'activity' died
M016516  11-21 11:50:59.430  5927  5927 I Zygote  : Process 6082 exited due to signal 9 (Killed)
M016517  11-21 11:50:59.431  5927  5927 E Zygote  : Exit zygote because system server (pid 6082) has terminated
M016518  11-21 11:50:59.432  5927  5927 D Zygote  : SprdDebug set prop ret = 0
M016519  11-21 11:50:59.432   480  5939 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070110 cached: 0/0M, 0/0% in use; allocs: 10, 70% recycled; transfers: 9, 67% unfetced
M01651A  11-21 11:50:59.433   480  5944 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070310 cached: 0/0M, 0/0% in use; allocs: 15, 87% recycled; transfers: 14, 86% unfetced
M01651B  11-21 11:50:59.433   480   480 D BufferPoolAccessor: Destruction - bufferpool2 0xa706fe10 cached: 0/0M, 0/0% in use; allocs: 10, 80% recycled; transfers: 9, 78% unfetced
M01651C  11-21 11:50:59.435   366   366 D SPRDHWComposer: SprdPrimaryDisplayDevice::commit <784>: No Job to commit, totalLayerCount = 0
M01651D  11-21 11:50:59.435   366   366 I SPRDHWComposer: HWCDisplay::present_display <785>: No job to commit, return ERR_NO_JOB
M01651E  11-21 11:50:59.437  6281  6281 D AndroidRuntime: Shutting down VM
C01651F  11-21 11:50:59.437  6281  6281 E AndroidRuntime: FATAL EXCEPTION: main
C01651F  11-21 11:50:59.437  6281  6281 E AndroidRuntime: Process: com.android.phone, PID: 6281
C01651F  11-21 11:50:59.437  6281  6281 E AndroidRuntime: DeadSystemException: The system died; earlier logs will point to the root cause
M016520  11-21 11:50:59.439   249   249 I ServiceManager: service 'procstats' died
M016521  11-21 11:50:59.439   249   249 I ServiceManager: service 'meminfo' died
M016522  11-21 11:50:59.439   249   249 I ServiceManager: service 'gfxinfo' died
M016523  11-21 11:50:59.439   249   249 I ServiceManager: service 'dbinfo' died
M016524  11-21 11:50:59.439   249   249 I ServiceManager: service 'cpuinfo' died
M016525  11-21 11:50:59.439   249   249 I ServiceManager: service 'permission' died
M016526  11-21 11:50:59.439   249   249 I ServiceManager: service 'processinfo' died
M016527  11-21 11:50:59.439   249   249 I ServiceManager: service 'overlay' died
M016528  11-21 11:50:59.439   249   249 I ServiceManager: service 'sensor_privacy' died
M016529  11-21 11:50:59.439   249   249 I ServiceManager: service 'sensorservice' died
M01652A  11-21 11:50:59.439  5931  6023 E IPCThreadState: attemptIncStrongHandle(4): Not supported
M01652B  11-21 11:50:59.439   249   249 I ServiceManager: service 'ethernet' died
M01652C  11-21 11:50:59.439   249   249 I ServiceManager: service 'battery' died
M01652D  11-21 11:50:59.439   249   249 I ServiceManager: service 'batteryproperties' died
M01652E  11-21 11:50:59.439   249   249 I ServiceManager: service 'device_identifiers' died
M01652F  11-21 11:50:59.439   249   249 I ServiceManager: service 'uri_grants' died
M016530  11-21 11:50:59.440  6281  6281 D HprofFactory: Create HprofDebugEx
M016531  11-21 11:50:59.439   249   249 I ServiceManager: service 'activity_task' died
M016532  11-21 11:50:59.444   249   249 I ServiceManager: service 'appops' died
M016533  11-21 11:50:59.444   249   249 I ServiceManager: service 'batterystats' died
M016534  11-21 11:50:59.444   249   249 I ServiceManager: service 'power' died
M016535  11-21 11:50:59.444   249   249 I ServiceManager: service 'thermalservice' died
M016536  11-21 11:50:59.444   249   249 I ServiceManager: service 'recovery' died
M016537  11-21 11:50:59.444   249   249 I ServiceManager: service 'display' died
M016538  11-21 11:50:59.444   249   249 I ServiceManager: service 'package' died
M016539  11-21 11:50:59.444   249   249 I ServiceManager: service 'package_native' died
M01653A  11-21 11:50:59.444   249   249 I ServiceManager: service 'usagestats' died
M01653B  11-21 11:50:59.444   249   249 I ServiceManager: service 'webviewupdate' died
M01653C  11-21 11:50:59.444   249   249 I ServiceManager: service 'binder_calls_stats' died
M01653D  11-21 11:50:59.444   249   249 I ServiceManager: service 'looper_stats' died
M01653E  11-21 11:50:59.444  6281  6281 I Process : Sending signal. PID: 6281 SIG: 9
。。。。。(略)

3 看以上日志,系统服务全部挂掉,接下来我们继续分析log

看android0.log日志,我们分析如下。

发生SWT:
  "android.fg"线程在等锁<0x0b167f2f>,该锁是被"android.display"持有;
  "android.display"又在等锁<0x046172a2>,该锁是被"main"线程持有;
  "main"线程又在等锁<0x0d005081>,该锁是被"HwBinder:745_5"持有;
  "HwBinder:745_5"线程又在等锁<0x0b167f2f>,导致发生死锁了。

[下一步计划]
待AMS看下死锁原因,谢谢!

[分析过程]  
[1119anrlog\ap\000-1119_153646_poweron\0-android.log]:
E00CBFE  11-19 15:42:02.313   745   770 I watchdog: Blocked in handler on foreground thread (android.fg), Blocked in handler on main thread (main), Blocked in handler on ui thread (android.ui), Blocked in handler on display thread (android.display), Blocked in handler on ActivityManager (ActivityManager), Blocked in handler on PowerManagerService (PowerManagerService)
S00CCF3  11-19 15:42:15.914   745   770 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in handler on foreground thread (android.fg), Blocked in handler on main thread (main), Blocked in handler on ui thread (android.ui), Blocked in handler on display thread (android.display), Blocked in handler on ActivityManager (ActivityManager), Blocked in handler on PowerManagerService (PowerManagerService)
 
----- pid 745 at 2024-11-19 15:41:21 -----
Cmd line: system_server

"android.fg" prio=5 tid=14 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x13141228 self=0x9a7fda00
  | sysTid=764 nice=0 cgrp=default sched=0/0 handle=0x8454c230
  | state=S schedstat=( 1707629333 1820559435 5437 ) utm=148 stm=22 core=1 HZ=100
  | stack=0x84449000-0x8444b000 stackSize=1040KB
  | held mutexes=
  at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:15827)
  - waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17
  at android.app.ContextImpl.sendOrderedBroadcastAsUser(ContextImpl.java:1314)
  at android.app.ContextImpl.sendOrderedBroadcastAsUser(ContextImpl.java:1276)
  at com.android.server.ConnectivityService.sendDataActivityBroadcast(ConnectivityService.java:2086)
  at com.android.server.ConnectivityService.access$400(ConnectivityService.java:235)
  at com.android.server.ConnectivityService$3.interfaceClassDataActivityChanged(ConnectivityService.java:1664)
  at com.android.server.NetworkManagementService.lambda$notifyInterfaceClassActivity$5(NetworkManagementService.java:438)
  at com.android.server.-$$Lambda$NetworkManagementService$D43p3Tqq7B3qaMs9AGb_3j0KZd0.sendCallback(lambda:-1)
  at com.android.server.NetworkManagementService.invokeForAllObservers(NetworkManagementService.java:340)
  at com.android.server.NetworkManagementService.notifyInterfaceClassActivity(NetworkManagementService.java:438)
  at com.android.server.NetworkManagementService.access$1200(NetworkManagementService.java:117)
  at com.android.server.NetworkManagementService$NetdUnsolicitedEventListener.lambda$onInterfaceClassActivityChanged$0$NetworkManagementService$NetdUnsolicitedEventListener(NetworkManagementService.java:666)
  at com.android.server.-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$0xWa9DGxTnoGVHppsM-nng2PygE.run(lambda:-1)
  at android.os.Handler.handleCallback(Handler.java:883)
  at android.os.Handler.dispatchMessage(Handler.java:100)
  at android.os.Looper.loop(Looper.java:214)
  at android.os.HandlerThread.run(HandlerThread.java:67)
  at com.android.server.ServiceThread.run(ServiceThread.java:44)
 
"android.display" prio=5 tid=17 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x13141568 self=0x9a800400
  | sysTid=767 nice=-3 cgrp=default sched=0/0 handle=0x84231230
  | state=S schedstat=( 875860938 1723520664 3899 ) utm=62 stm=25 core=2 HZ=100
  | stack=0x8412e000-0x84130000 stackSize=1040KB
  | held mutexes=
  at com.android.server.power.PowerManagerService.updateUidProcStateInternal(PowerManagerService.java:3148)
  - waiting to lock <0x046172a2> (a java.lang.Object) held by thread 1
  at com.android.server.power.PowerManagerService$LocalService.updateUidProcState(PowerManagerService.java:5200)
  at com.android.server.am.ActivityManagerService.enqueueUidChangeLocked(ActivityManagerService.java:16904)
  at com.android.server.am.OomAdjuster.updateOomAdjLocked(OomAdjuster.java:621)
  at com.android.server.am.ActivityManagerService.updateOomAdjLocked(ActivityManagerService.java:17226)
  at com.android.server.am.ActivityManagerService$LocalService.updateOomAdj(ActivityManagerService.java:18350)
  - locked <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx)
  at com.android.server.wm.-$$Lambda$yIIsPVyXvnU3Rv8mcliit-gIpSs.run(lambda:-1)
  at android.os.Handler.handleCallback(Handler.java:883)
  at android.os.Handler.dispatchMessage(Handler.java:100)
  at android.os.Looper.loop(Looper.java:214)
  at android.os.HandlerThread.run(HandlerThread.java:67)
  at com.android.server.ServiceThread.run(ServiceThread.java:44)
 
"main" prio=5 tid=1 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x757ab450 self=0xb053de00
  | sysTid=745 nice=-2 cgrp=default sched=0/0 handle=0xb0b20dc0
  | state=S schedstat=( 6436213292 2293829926 7935 ) utm=480 stm=163 core=1 HZ=100
  | stack=0xbe5e9000-0xbe5eb000 stackSize=8192KB
  | held mutexes=
  at com.android.server.BatteryService$LocalService.getBatteryChargeCounter(BatteryService.java:1337)
  - waiting to lock <0x0d005081> (a java.lang.Object) held by thread 130
  at com.android.server.power.batterysaver.BatterySavingStats.injectBatteryLevel(BatterySavingStats.java:248)
  at com.android.server.power.batterysaver.BatterySavingStats.transitionStateLocked(BatterySavingStats.java:287)
  at com.android.server.power.batterysaver.BatterySavingStats.transitionState(BatterySavingStats.java:268)
  - locked <0x046172a2> (a java.lang.Object)
  at com.android.server.power.batterysaver.BatterySaverController.updateBatterySavingStats(BatterySaverController.java:519)
  - locked <0x046172a2> (a java.lang.Object)
  at com.android.server.power.batterysaver.BatterySaverController.access$100(BatterySaverController.java:59)
  at com.android.server.power.batterysaver.BatterySaverController$1.onReceive(BatterySaverController.java:187)
  at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1583)
  at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(lambda:-1)
  at android.os.Handler.handleCallback(Handler.java:883)
  at android.os.Handler.dispatchMessage(Handler.java:100)
  at android.os.Looper.loop(Looper.java:214)
  at com.android.server.SystemServer.run(SystemServer.java:562)
  at com.android.server.SystemServer.main(SystemServer.java:370)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:914)
 
"HwBinder:745_5" prio=5 tid=130 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x147408b0 self=0x7de38e00
  | sysTid=2169 nice=0 cgrp=default sched=0/0 handle=0x7ba8c230
  | state=S schedstat=( 35393468 114781610 106 ) utm=3 stm=0 core=2 HZ=100
  | stack=0x7b991000-0x7b993000 stackSize=1008KB
  | held mutexes=
  at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:15827)
  - waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17
  at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1049)
  at com.android.server.BatteryService$Led.sendLightActionBroadcast(BatteryService.java:1128)
  at com.android.server.BatteryService$Led.updateLightsLocked(BatteryService.java:1179)
  at com.android.server.BatteryService.processValuesLocked(BatteryService.java:680)
  at com.android.server.BatteryService.update(BatteryService.java:453)
  - locked <0x0d005081> (a java.lang.Object)
  at com.android.server.BatteryService.access$1100(BatteryService.java:116)
  at com.android.server.BatteryService$HealthHalCallback.healthInfoChanged(BatteryService.java:1187)
  at android.hardware.health.V2_0.IHealthInfoCallback$Stub.onTransact(IHealthInfoCallback.java:440)
 
"android.ui" prio=5 tid=15 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x13141398 self=0x9a7fe800
  | sysTid=765 nice=-2 cgrp=default sched=0/0 handle=0x84443230
  | state=S schedstat=( 2231931697 1799238491 11891 ) utm=148 stm=74 core=0 HZ=100
  | stack=0x84340000-0x84342000 stackSize=1040KB
  | held mutexes=
  at com.android.server.am.ActivityManagerService.dispatchUidsChanged(ActivityManagerService.java:3345)
  - waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17
 
"ActivityManager" prio=5 tid=23 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x13141c58 self=0x9a83d800
  | sysTid=773 nice=-2 cgrp=default sched=0/0 handle=0x83bfb230
  | state=S schedstat=( 769154699 733906338 2390 ) utm=56 stm=20 core=1 HZ=100
  | stack=0x83af8000-0x83afa000 stackSize=1040KB
  | held mutexes=
  at com.android.server.am.ActivityManagerService.idleUids(ActivityManagerService.java:17290)
  - waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17
 
"PowerManagerService" prio=5 tid=33 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x13145a78 self=0x9a846400
  | sysTid=783 nice=-4 cgrp=default sched=0/0 handle=0x830ab230
  | state=S schedstat=( 369337669 465048778 2947 ) utm=20 stm=16 core=2 HZ=100
  | stack=0x82fa8000-0x82faa000 stackSize=1040KB
  | held mutexes=
  at com.android.server.power.PowerManagerService$BatteryReceiver.onReceive(PowerManagerService.java:4070)
  - waiting to lock <0x046172a2> (a java.lang.Object) held by thread 1 

4 以上日志结论是发生死锁导致死机。我们继续分析

文件夹中有crash.log.看日志如下

C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: FATAL EXCEPTION: main
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: Process: com.android.calendar, PID: 17985
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.calendar/com.android.calendar.AllInOneActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.calendar.DayFragment: could not find Fragment constructor
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3322)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3475)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2039)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7626)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.calendar.DayFragment: could not find Fragment constructor
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Fragment.instantiate(Fragment.java:562)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentContainer.instantiate(FragmentContainer.java:53)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentState.instantiate(FragmentState.java:77)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:2900)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentController.restoreAllState(FragmentController.java:142)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Activity.onCreate(Activity.java:1504)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at com.android.calendar.AllInOneActivity.onCreate(AllInOneActivity.java:274)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7879)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7867)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3294)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	... 11 more
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: Caused by: java.lang.NoSuchMethodException: com.android.calendar.DayFragment.<init> []
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at java.lang.Class.getConstructor0(Class.java:2332)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at java.lang.Class.getConstructor(Class.java:1728)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Fragment.instantiate(Fragment.java:543)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	... 21 more

刚开始一直以为是这两个造成的,但是此处未做过定制,所以问题不是这里。继续寻找问题(后续发现我被这个crash误导了,这是monkey压测捕获的log,正式的log日志是这里的日志内容不一样的)

2 日志分析二(正确方案)

因为无复现逻辑还是想法触发死机的行为,无意间使用数据线插拔设备,导致设备卡顿,赶紧导出日志

  1. 日志结构如下:

    看以上日志结构,最外层的文件夹结尾都是fwkreboot,说明fw是重启的。日志都有traces文件夹,里面都有anr的log日志,说明发生了卡顿,现象也是如此。
  2. 查看0-android_crash.log 日志如下(其他crash日志也是同样的内容)

    看日志说明,系统发生死机,fwkreboot是重启行为。可以看时间点以前的log确定问题点
  3. 接下来继续看traces下的anr 日志。寻找相同的日志log,截图如下
  4. 可以看到以上截图,有sendLightActionBroadcast方法 发生blocked,在BatteryService类里。接下来我们去阅读BatteryService修改的逻辑。
  5. BatteryService中开发逻辑

  6. 看代码,我们在指示灯亮起时发送广播。说明发送广播时发生了卡顿。看该类中有发送广播的逻辑如下截图

    截图中所有发送的广播都是放在队列里面发送。这样我们的广播方式和他们保持一致就可有了。
  7. 修改方案:将广播放在Handler里面发送。
  8. 打包测试验证。未复现卡顿或死机现象。问题解决
     

总结:第一次遇到死机现象还是有点蒙逼的,因为没有复现逻辑,不确定造成死机的原因,前期clash的日志误导了判断。后续可复现时日志重复,根据前期日志的分析,定位就非常容易了。写次日志更多的是梳理从问题到日志分析,到问题定位解决,从宏观到具体的一个思路和日志结构的直观浏览。

OVER~

参考文章

Android的死机、重启问题分析方法

Android各种卡死黑屏系统稳定性问题Log抓取大荟萃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929926.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flex布局容易忽略的角色作用

目录 清除浮动 作用于行内元素 flex-basis宽度 案例一&#xff1a; 案例二&#xff1a; 案例三&#xff1a; flex-grow设置权重 案例一&#xff1a; 案例二&#xff1a; 简写flex-grow:1 0 auto; flex作为一维布局,行和列的使用&#xff0c;忽略的小角色&#xff0c;大…

如何安全地远程控制电脑

在当今的工作环境中&#xff0c;远程控制技术变得越来越关键。无论是远程工作、技术支持&#xff0c;还是常规的维护任务&#xff0c;远程控制都为用户带来了极大的方便。本文将详细探讨远程控制电脑的基本概念、如何安全地进行远程控制电脑的操作&#xff0c;以及RayLink远程控…

Linux实现地址转换和抓包

1.Linux实现地址转换 1.1 SNAT和DNAT NAT:地址转换SNAT:源地址转换DNAT:目的地址转换 内网——》外网&#xff1a;内网色的ip不能直接和公网ip通信&#xff0c;必须要把内网的地址转换成和公网ip通信的地址 外网——》内网&#xff1a;外网也不能直接和内网通信&#xff0c…

与火山引擎合作深化,观测云携一站式监控解决方案登陆万有商城

近日&#xff0c;观测云正式宣布入驻火山引擎的万有商城。作为一款全栈式数据观测与分析平台&#xff0c;观测云的加入不仅丰富了火山引擎生态&#xff0c;也为广大企业用户带来了更便捷的数字化工具&#xff0c;助力企业快速实现业务监控与优化。 从全球覆盖到本地深耕&#x…

一、web基础和http协议

前言 https://www.baidu.com/&#xff1a;URL&#xff08;是一种万维网寻址网址&#xff09; https://&#xff1a;协议&#xff0c;加密的http&#xff0c;加密的超文本传输协议&#xff0c;在数据传输之前要通过整数进行身份验证&#xff0c;验证通过才可以进行数据传输。 …

Vue生成类似于打卡页面

数据表格 <el-table :data"tableData" border height"calc(100vh - 240px)" :cell-style"cellFun"><el-table-column label"姓名" show-overflow-tooltip prop"name" align"center"/><el-table-co…

高通---Camera调试流程及常见问题分析

文章目录 一、概述二、Camera配置的整体流程三、Camera的代码架构图四、Camera数据流的传递五、camera debug FAQ 一、概述 在调试camera过程中&#xff0c;经常会遇到各种状况&#xff0c;本篇文章对camera调试的流程进行梳理。对常见问题的提供一些解题思路。 二、Camera配…

03_Webpack模块打包工具

03_Webpack模块打包工具 目录 知识点自测 以下哪个选项是 ECMAScript 默认导出和导入的语法&#xff1f; A&#xff1a;export 和 require B&#xff1a;module.exports {} 和 import 变量名 C&#xff1a;export default 和 import 变量名 D&#xff1a;export 和 import {…

FastAPI解决跨域报错net::ERR_FAILED 200 (OK)

目录 一、跨域问题的本质 二、FastAPI中的CORS处理 1. 安装FastAPI和CORS中间件 2. 配置CORS中间件 3. 运行FastAPI应用 三、解决跨域报错的步骤 四、案例&#xff1a;解决Vue.js与FastAPI的跨域问题 1. Vue.js前端应用 2. FastAPI后端API 3. 配置CORS中间件 4. 运行…

盲盒抽卡机小程序,打造趣味与惊喜并存的卡牌体验

随着科技的不断发展&#xff0c;线上营销方式已经渗透到了各行各业中&#xff0c;卡牌市场也不例外。传统的拆卡方式存在一些局限问题&#xff0c;为了提高消费者的拆卡体验&#xff0c;线上抽卡机系统成为了新的发展方式&#xff0c;提供全新的市场活力。 盲盒抽卡机系统是卡…

ModelScope-Agent(1): 基于开源大语言模型的可定制Agent系统

目录 简介快速入门 简介 github地址 快速入门 看前两篇&#xff0c;调用千问API和天气API # 选用RolePlay 配置agent from modelscope_agent.agents.role_play import RolePlay # NOQArole_template 你扮演一个天气预报助手&#xff0c;你需要查询相应地区的天气&#x…

git将一个项目的文件放到另一个项目的文件夹下

现有productA与productB项目&#xff0c;现将productA、productB放到productC下的mall-web文件下&#xff0c;目前只能实现保留productA的提交记录&#xff0c;暂不能实现保留两个的提交记录 一.克隆最新的productC的库&#xff0c;这里指mall-web 二.将productA复制到mall-we…

flink-connector-mysql-cdc:01 mysql-cdc础配置代码演示

flink-connector-mysql-cdc&#xff1a; 01 mysql-cdc基础配置代码演示02 mysql-cdc高级扩展03 mysql-cdc常见问题汇总04 mysql-cdc-kafka生产级代码分享05 flink-kafka-doris生产级代码分享06 flink-kafka-hudi生产级代码分享 flink-cdc版本&#xff1a;3.2.0 flink版本&…

【机器学习】机器学习的基本分类-监督学习-支持向量机(Support Vector Machine, SVM)

支持向量机是一种强大的监督学习算法&#xff0c;主要用于分类问题&#xff0c;但也可以用于回归和异常检测。SVM 的核心思想是通过最大化分类边界的方式找到数据的最佳分离超平面。 1. 核心思想 目标 给定训练数据 &#xff0c;其中 是特征向量&#xff0c; 是标签&#xf…

[Redis#15] 持久化 | AOF | rewrite | aof_buf | 混合持久化

目录 1 使用AOF 流程 问题一&#xff1a;父进程在fork之后继续写旧AOF文件的意义 问题二&#xff1a;执行BGREWRITEAOF时的特殊情况处理 2 命令写入 3 文件同步 4 重写机制 工作流程&#xff1a; 触发条件 混合持久化 持久化 sum AOF&#xff08;Append Only File&a…

springai结合ollama

目录 ollama 介绍 使用 下载&#xff1a; 安装&#xff1a; 点击这个玩意next就行了。 运行 spring ai使用ollama调用本地部署的大模型 加依赖 配置yml 写代码 ollama 介绍 官网&#xff1a;Ollama Ollama是一个用于部署和运行各种开源大模型的工具&#xff1b; …

关于Chrome自动同步书签的解决办法

前言 并不一定适用所有用户&#xff0c; 目前我在网上搜集了一些资料&#xff0c;也做了一些尝试。 就我个人总结的经验来讲&#xff0c;分享大家以下几种办法&#xff1a; 1.书签同步插件 点击如下&#x1f517;&#xff1a; Chrome书签同步https://bm.famend.cn/ …

SpringMVC纯注解快速开发

此文章适合具有一定的java基础的同学看哦&#xff0c;如果有看不懂的基本代码还是先补补java基础哦。 此教程带您不使用xml文件而是纯注解开发&#xff0c;易懂、快捷、迅速&#xff0c;从0开始搭建&#xff0c;很快就能构建起一个SpringMVC项目&#xff0c;能学到两种使用tom…

16-02、JVM系列之:内存与垃圾回收篇(二)

JVM系列之&#xff1a;内存与垃圾回收篇(二) ##本篇内容概述&#xff1a; 1、堆Heap Area 2、方法区Method Area 3、运行时数据区总结 4、对象的实例化内存布局和访问定位一、堆 Heap Area 1、堆的核心概念 一个JVM实例只存在一个堆内存&#xff0c;堆也是Java内存管理的核心…

第二篇:k8s工作流程

我们来看通过deployment部署pod的常规流程&#xff1a; kubectl向apiserver发送部署请求&#xff08;例如使用 kubectl create -f deployment.yml&#xff09;apiserver将 Deployment 持久化到etcd&#xff1b;etcd与apiserver进行一次http通信。controller manager通过watch a…