Unhandled fault: Precise External Abort on non-linefetch 错误?

dongjiawei316 2014-09-13 04:24:41
我的程序在启动时,有一定概率触发以下错误:
Unhandled fault: Precise External Abort on non-linefetch (0x1018) at 0x24800000

我估计是我访问mmap的内存引起的,因为我之前遇到过,如果我访问一个没有反应的物理地址映射出来的内存时,也会有类似的打印。

我有如下的疑问:
1、这个错误是在哪打印的?内核层还是用户层?
2、报错的地址是物理地址还是虚拟地址?因为即使在内核层,linux也是不能直接访问物理地址吧!而0x24800000
这个地址却是个实际的物理地址。而我之前出错时,出错的地址均是虚拟地址。这是为什么呢?
...全文
1093 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小六@sll 2021-07-11
  • 打赏
  • 举报
回复

怎么解决的

dongjiawei316 2014-09-14
  • 打赏
  • 举报
回复
嗯,用的是ARM,地址我也知道是物理地址,是PCI-e的地址
Cody2k3 2014-09-14
  • 打赏
  • 举报
回复
楼主用的是ARM? 如果是, 这个错误是kernel code里面给出的,说明程序遇到fault,导致fault出现的地方可以是程序code,driver code,kernel code,不一而足,当然从楼主描述来说自己的code可能性更大 地址一般应该是虚拟地址,即mmu映射前的地址, 由于对arm不了解, 不知道楼主怎么判断这个地址是物理地址的,所以所言仅供参考 另, 似与此帖无关 但如果kernel想要读物理地址当然可以做到

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧