fix(main): 移除 BootInfo 局部重声明,修复 memmap 全 0
根因:BootInfo: t.CPtr = self.BootInfo(函数内注解重声明全局名)触发编译器 bug——局部 alloca 创建但从不写入(赋值落全局 @BootInfo),后续 BootInfo.X 读 未初始化局部 → 全 0 → mm.init 收 addr=0/size=0/desc=0 → 走 CMOS fallback → 读到 0xFF → size≈4GB → buddy 分配假内存 → 线程栈 4GB → #PF PANIC。 BootInfo 原始字节转储证实 bootloader 传参正确(mmap=0xde20d60 size=4800 desc=48 fb=0x80000000),纯内核读错。直接使用 global BootInfo 修复。 编译器 bug(注解局部重声明全局名赋值落全局)待 TransPyV 单独修复。
This commit is contained in:
1 parent
87d4e359d8
commit
530c85d6a4
1 file changed
+3
-1
@@ -47,7 +47,9 @@ class ViperKernel:
|
||||
def __init__(self):
|
||||
global BootInfo
|
||||
self.BootInfo = BootInfo
|
||||
BootInfo: bootinfo.bootinfo | t.CPtr = self.BootInfo
|
||||
# 注意:此处不能再写 `BootInfo: bootinfo.bootinfo | t.CPtr = self.BootInfo`
|
||||
# 局部重声明全局名——编译器会创建局部 alloca 却不写入(赋值落全局),
|
||||
# 后续 BootInfo.X 读未初始化局部 → 全 0 → memmap 永不可用。直接用 global。
|
||||
serial.init()
|
||||
serial.puts("===== ViperOS VKernel Test\n =====")
|
||||
serial.puts("V2.3.8\n")
|
||||
|
||||
Reference in new issue
Block a user