![[Android稳定性] 第036篇 [原理篇] 理解中断上下文、进程上下文以及进程调度之间的关系](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_036.png)
[Android稳定性] 第036篇 [原理篇] 理解中断上下文、进程上下文以及进程调度之间的关系
本文深入探讨了进程上下文、中断上下文以及 Linux 进程调度器(如 CFS)的概念和关联性。进程上下文是内核代码为特定进程执行任务的环境,能被调度、休眠和参与 CFS 调度。中断上下文是内核响应中断时运行的代码环境,不能睡眠,且不直接参与调度。SoftIRQ 和 Tasklet 作为中间层,处理中断后的任务。三者之间的关联性体现在中断上下文可以触发调度事件,而进程上下文可以主动调用调度器。文中还列举了在中断上下文中不能调用的函数或行为,并强调了中断上下文中禁止使用可能引起睡眠或阻塞的函数,以避免系统问题。
![[Android稳定性] 第021篇 [问题篇] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/06/halo_jhqyzy1.png?x-oss-process=style/watermark&x-oss-process=image/resize,w_800,m_lfit)
[Android稳定性] 第021篇 [问题篇] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted
### 文章摘要 本文探讨了在Android系统中出现的一个内核崩溃问题,具体表现为`Kernel panic`错误,并深入分析了崩溃的原因。通过对内核日志和进程栈的解析,发现崩溃发生在`mi_binder_wait4_hook`函数中,由于栈帧指针`x29`发生`bitflip`错误,导致从错误的地址读取值,触发`__stack_chk_fail`函数,最终导致内核崩溃。文章详细介绍了如何通过分析汇编代码和进程栈来定位问题,并提出了可能的解决方案,即添加`nop`指令来防止`bitflip`问题。