[Android稳定性] 第016篇 [原理篇] 高通平台watchdog机制原理解析 2025-01-14 评论
[Android稳定性] 第016篇 [原理篇] 高通平台watchdog机制原理解析

Watchdog是一种用于嵌入式系统的机制,当系统出现严重故障时,可以在无人为介入的情况下自动重新启动系统。它分为硬件和软件两种类型,硬件watchdog比软件watchdog有更好的可靠性。在高通平台Android系统中,watchdog的实现有所不同,本文主要介绍了高通平台Android系统中watchdog的种类、实现、初始化入口、通知链和主线程。

[Android稳定性] 第015篇 [问题篇] Unable to handle kernel NULL pointer dereference 2025-01-02 评论
[Android稳定性] 第015篇 [问题篇] Unable to handle kernel NULL pointer dereference

系统出现死机,初步分析定位到问题为内核空指针引用,具体是在focaltech_spi模块的fts_power_usb_notifier_callback函数中。进一步通过trace32恢复现场发现,问题在于wq对象在函数执行过程中被销毁。根本原因是fts_data->ts_workqueue队列在fts_power_usb_notifier_callback执行过程中被销毁。

[Android稳定性] 第013篇 [问题篇] page allocation failure: order:0内存分配失败的异常报错 2024-12-26 评论
[Android稳定性] 第013篇 [问题篇] page allocation failure: order:0内存分配失败的异常报错

在工厂老化测试过程中,设备出现卡视频现象,但USB接口可以识别到ADB口。通过分析日志发现,设备频繁出现"page allocation failure"错误,且均为"order:0",表明在分配一页大小的内存时失败。然而,系统配置中存在空闲的4KB内存,且内存分配标志为"GFP_NOWAIT|__GFP_NORETRY",表示希望进行一个非阻塞的内存分配,而空闲的UMEH页面恰好符合这些条件。这表明内核在内存充足的情况下无法分配内存,原因可能在于erofs文件系统在执行解压缩时使用GFP_NOWAIT标签进行内存申请,减少分配page的压力,但可能存在系统内存水位线不满足要求的情况。

[Android稳定性] 第012篇 [原理篇] blackbox的原理介绍 2024-12-26 7 条
[Android稳定性] 第012篇 [原理篇] blackbox的原理介绍

Blackbox 是一种日志管理方案,旨在解决当前日志分析和自动化解析的痛点,如日志分散、时间标准不统一、关键事件记录丢失、RAS 实现自动化分析困难等。Blackbox 将大部分系统日志集中在特定分区,具有时间线的流式日志,可读性更强。它还根据已有经验在系统运行的关键节点打点,提升上市后稳定性问题的定位效率。针对不同的日志,有不同的日志老化删除节奏,从而更多保存异常日志。Blackbox 还提高了 RAS 自动化分析的能力,并可在设备卡死时通过 9008 方式将日志分区 dump 出来并解析,辅助问题分析。

[Android稳定性] 第011篇 [原理篇] minidump的原理介绍补充 2024-12-25 评论
[Android稳定性] 第011篇 [原理篇] minidump的原理介绍补充

这篇文章主要介绍了Android系统中的minidump机制,这是一种用于保存系统崩溃信息的技术。文章首先解释了minidump的概念,即各个子系统在内存映射表中注册,当系统崩溃时,boot subsystem会加密并保存注册过的内存信息到RAM EMMC分区。 接着,文章详细描述了minidump的流程图和代码流程,包括HLOS侧和NON-HLOS侧的流程。在HLOS侧,文章重点介绍了defconfig配置、相关代码以及msm_minidump_add_region函数。在NON-HLOS侧,文章重点介绍了add_minidump_regions函数和boot_ram_dump_to_raw_parition函数。 文章还介绍了小米项目在minidump中增加的regions,包括md_kmsg、md_pmsg和tz_log,并解释了它们的设计原理。最后,文章介绍了如何验证minidump,包括设置minidump到emmc、触发dump以及从设备中拉取minidump。 此外,文章还介绍了minidump.gz的解析方法,包括解压minidump.gz和拆分minidump。