Linux内存管理(五十七):内存管理可能出现的bug和panic

源码基于:Linux 5.4

0. 前言

在之前的博文《Linux内核oops panic简析》中简单分析Linux 内核异常处理的流程。本文在此基础上总结下内存管理系统中(针对arm64架构)可能出现的BUG 或 oops 或panic,并对这些情况进行剖析。

因为涉及到的BUG 场景不一定相同,本篇博文应该是一个长期整理的过程。

1. BUG存在的形式

1.1 BUILD_BUG()

1.2 BUILD_BUG_ON()

include/linux/build_bug.h

#define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")

#define BUILD_BUG_ON(condition) \
	BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)

#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)

这个是编译时候就需要检验的,如果condition 为 false,会停掉编译,并发出error msg 打印。

对于这类编译时需要检查的问题,本文暂时不重点分析。

1.3 BUG()

<

猜你喜欢

转载自blog.csdn.net/jingerppp/article/details/130762788