如何开通免费网站网络培训网站
我们查看oops信息或者dmsg或者串口日志,可以看到如下异常:
Unable to handle kernel paging request for data at address 0xc6fef31e
Faulting instruction address: 0xc0088b8c
我们可以看到三种常见的内存访问错误类型
根据打印看Unable to handle kernel paging request错误通常有三种可能的原因:
-
当虚拟地址为0x00000000时,说明使用了空指针。
-
当虚拟地址没有越出内核地址空间范围时,说明指针指向的内存受到某种限制。
-
当虚拟地址越出内核地址空间范围(即指向用户空间)时,说明内核试图直接访问用户空间内存,而没有使用适当的API。
内存信息补充
在32位系统中:
- 0~3G范围内的内存地址分配给用户空间,范围是0x00000000到0x3fffffff
- 3~4G范围内的内存地址分配给内核空间,范围是0x40000000到0xffffffff
在64位系统中:
- 用户空间:0x0000000000000000到0x0000ffffffffffff(256TBÿ