1月前
[Android稳定性] 第61篇 UFS异常导致卡开机logo
高通平台项目在工厂老化测试中出现卡开机logo的棘手问题,设备无法通过USB或串口获取有效日志,通过强制fulldump分析发现,系统init进程自开机五秒后便持续处于D状态,导致系统无法正常启动。内核堆栈显示进程在等待PG_locked时失败,疑似死锁或关键进程卡死,经进一步排查,平台迅速定位UFS存储异常——UFS设备自开机五秒后未再触发中断。文章详解了如何从核心结构体如ufs_stats、ufs_hba入手,追溯设备树节点至具体驱动,指导工程师在dump文件中精确定位存储异常发生时间及其相关数据。通过系统性分析,为后续UFS问题跟进提供了清晰的技术路径和实际操作指引,展现了严谨的问题排查步骤。
7月前
[Android稳定性] 第056篇 [问题篇] 记一例Kernel panic - not syncing: Attempted to kill init!
**问题现场**:系统出现大量I/O和read ERROR,初步怀疑与storage访问相关,进一步分析发现系统正在进行shutdown流程。 **初步分析**:系统当时正在走低电关机流程,且尝试访问磁盘数据时出现IO ERROR,怀疑是下电时序导致storage先下电,导致上层进程访问失败。 **平台回复**:charger相关函数检测到低电后直接调用kernel_power_off执行下电关机,跳过上层shutdown流程,导致上层访问存储设备失败,引发异常。 **解决方法**:删除底层shutdown操作,先走上层关机流程,避免问题发生。 **代码浅析**:正常情况下,上层先走完shutdown流程,再通过syscall让底层继续shutdown。 **补充**:在系统下电流程中,做好时序上的同步非常重要,避免出现竞态访问导致异常。
2024-12-15
[Android稳定性] 第001篇 [方法篇] 高通Android平台稳定性分析介绍
本文主要介绍了Linux kernel crash分析的基础知识点,包括高通pmic的几种复位类型、解析dump的工具、Linux ramdump parser的使用、TRACE32工具的应用,以及系统异常的分类及原因。作者详细阐述了每种复位类型的特点和适用场景,列举了多种解析dump的工具及其输出,并通过图表和图片展示了Linux ramdump parser和TRACE32的使用方法。同时,文章还简要介绍了系统异常的分类及原因,为研发人员提供了解决底层稳定性问题的参考。