TermiNexus
c9c507c67d
fix(vkernel): _render 的刷新/背景循环按屏幕高度夹取行界,避免脏行值被写坏时死循环越界写
面包屑定位:卡在 “[rc] vblank done” 与 “[rc] flush done” 之间 —— 即帧缓冲刷新循环。
_dirty_y_max 是 .bss 全局,一旦被写坏成很大的正数:
- 循环退化成死循环 → 卡死(故 [dt] 心跳一行都不打印);
- run_start*pitch 越写越远,写出 0x80000000 帧缓冲之外 → 落进 MMIO →
宿主 QEMU 被写崩(unknown software exception 0x40000015 = STATUS_FATAL_APP_EXIT),
且屏幕只留下顶部已写的那一小块。
两个循环(背景铺底 + 帧缓冲刷新)的行界现夹到 [0, h-1]。这不是根因修复
(.bss 仍被写坏),但:
- 止血:不再死循环、不再把宿主 QEMU 写崩;
- 兼作探针:[dt] 心跳里的 dymin/dymax 若明显越界,即可确认 .bss 被写坏的量级。
2026-10-14 14:18:21 +08:00
..
2026-10-14 12:54:43 +08:00
2026-10-12 15:06:50 +08:00
2026-10-14 13:46:57 +08:00
2026-10-14 13:36:01 +08:00
2026-10-12 15:06:50 +08:00
2026-10-14 12:54:43 +08:00
2026-10-07 19:04:33 +08:00
2026-10-14 14:18:21 +08:00
2026-10-07 19:04:33 +08:00
2026-10-14 13:50:48 +08:00