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:
TermiNexus committed 2026-08-26 19:26:50 +08:00
1 parent 87d4e359d8
commit 530c85d6a4
1 file changed
+3 -1
+3 -1
View File
@@ -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")