【深入内核】linux ftrace详解 8月前 4 条
【深入内核】linux ftrace详解

本文主要介绍了Ftrace(Function Tracer)的概念、实现原理和使用方法。Ftrace是Linux内核自带的轻量级跟踪框架,用于记录内核内部发生的事件与函数调用,帮助开发者洞察系统最深处的执行路径、时序瓶颈与异常行为。文章详细阐述了Ftrace的实现原理,包括静态插桩和动态插桩两种方式,并介绍了Ftrace的开启方法,包括设置tracer类型、设置tracer参数、使能tracer、进行测试和提取trace结果等步骤。此外,文章还介绍了常见的trace event详解和特别注意点,如能够使用adb和开机过程中死机的情况。

[Android稳定性] 第045篇 [问题篇] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 9月前 评论
[Android稳定性] 第045篇 [问题篇] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00

本文分析了在测试DDR TT和Reboot测试专项过程中机器出现dump的问题。通过panic现场和加debug patch的分析,发现死机原因是ufs没有初始化成功,函数`ufshcd_complete_dev_init`耗时过长。进一步分析发现,`kworker/6:1`线程在执行`kfree_rcu_monitor()`时被调度出去,并长时间卡在`schedule()`中,最终导致死机。根本原因是在ufs函数执行时被串口输出调度出去,而串口输出调度优先级很高,执行console_unlock()时持锁状态下运行,不允许调度,且阻塞式串口写函数`qcom_geni_serial_poll_tx_done`会造成长时间占用CPU。