gpt4 book ai didi

linux - 3.10 mark_bootmem()中的内核崩溃BUG()

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:33 24 4
gpt4 key购买 nike

我在 BUG() 处遇到内核崩溃 - http://lxr.free-electrons.com/source/mm/bootmem.c?v=3.10#L385带有以下消息

2kernel BUG at /kernel/mm/bootmem.c:385!

这可能是什么原因?

以下是函数调用轨迹

[<c0e165f8>] (mark_bootmem+0xd0/0xe0) from [<c0e05d64>] (bootmem_init+0x16c/0x26
[<c0e05d64>] (bootmem_init+0x16c/0x264) from [<c0e07980>] (paging_init+0x734/0x7
[<c0e07980>] (paging_init+0x734/0x7d4) from [<c0e03f20>] (setup_arch+0x3e8/0x69c
[<c0e03f20>] (setup_arch+0x3e8/0x69c) from [<c0e007d8>] (start_kernel+0x78/0x370
[<c0e007d8>] (start_kernel+0x78/0x370) from [<10008074>] (0x10008074)

谢谢

最佳答案

mm/bootmem.c 文件负责Boot Memory Allocator。函数 mark_bootmem 标记 startend 地址之间的内存页(start 向下舍入,end code> 向上舍入到页面边界)作为此分配器的保留(或在用于释放时未保留)。

它遍历 bdata_list 试图从请求的地址范围中找到包含第一页的区域。它不会找到它,您提到的 BUG() 将被触发。同样的BUG()如果找到成功了,但是region不够大(end在region之外)也会触发。所以这个 BUG() 意味着它无法找到请求的内存区域来标记。

现在如果我正确理解内核代码,在普通的 UMA 系统上,bdata_list 中只有一个条目,它应该描述系统中可用的低内存页面的范围。由于您没有提供太多有关系统的信息,因此很难猜测问题的确切原因,但总的来说,您的内存设置似乎已损坏。这件事是非常特定于体系结构的,所以很难说清楚到底发生了什么。

关于linux - 3.10 mark_bootmem()中的内核崩溃BUG(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com