TermiNexus
|
89a319e1be
|
chore(debug): 加临时探针定位 MMAP 返回高半污染与 Tk.buf 野指针 - MMAP/get_winbuf/redraw
|
2026-10-15 16:20:14 +08:00 |
|
TermiNexus
|
11ad0de988
|
fix(vpsdk): WINBUF_MAX_BYTES 改单字面量 4194304,避免最小宽度算术回绕成 0(三重故障诱因)
- `1024 * 1024 * 4` 按最小宽度(i16)做算术:1024×1024 先回绕成 0 ⇒ 缓冲只剩几字节 ⇒ flush 时内核 memcpy(dst, src, 240KB) 从 app 的几字节缓冲后狂读 ⇒ 内核越界读 → 异常路径再出事即三重故障
- 改成单字面量 4194304(不依赖任何算术)。与 V3_POOL 同属“最小宽度算术”坑:静态求值侧已在 61f23d9 按结果值加宽,这处是表达式侧,先按单字面量规避
|
2026-10-14 19:35:37 +08:00 |
|
TermiNexus
|
c977caec91
|
fix(vkernel/vpsdk): 窗口缓冲改走“用户缓冲 + WIN_FLUSH 拷贝”,修 app 写内核页 #PF(err=0x7)
- 现场:四个 app 一画就用户态 #PF,cr2 全在内核堆区(~0xb7c1000/0x9f81000/0xb851000/0xb881000),err=0x7(present + 用户写),RAX 正是各自颜色常量(0x1E1E32/0xC0C0C/0xF0F19)
- 根因:GET_WINBUF 把 desktop 的**内核**窗口后备缓冲地址直接交给 app(该页 U=0),app 当用户指针写 → 必然 #PF,四个 app 全中(tid=5 那条 cr2=0xffffffff52209000 是同一指针继续走坏)
- 内核:WIN_FLUSH 增加源指针 `WIN_FLUSH(win_id, src)`:先 desktop.get_fb 取窗口缓冲、再 desktop.get_fb_bytes 取字节数(配对取,避免 resize 重建导致尺寸/指针不一致),memcpy 后 desktop.flush;syscall_handler 的 WIN_FLUSH 分支透传 arg2;desktop 新增 get_fb_bytes
- app(vpsdk/window.vp):get_winbuf 改为按窗口分配**用户态**缓冲(stdlib.malloc → MMAP,落在 0x20000000 用户堆)并缓存;flush(win_id) 改为 WIN_FLUSH(win_id, 用户缓冲)
|
2026-10-14 19:30:29 +08:00 |
|
TermiNexus
|
b5f51415ca
|
fix(vpsdk): so_call1 的 arg1 改为 rawptr(裸地址用通配指针,避免级数不符误报)
dynlib.so_call1 的 arg1 只是原样交给系统调用的裸地址;原先声明为 t.CPtr(具体类型的
一级指针),调用方传字符串字面量(二级指针)会命中 CastError:
implicit pointer-to-pointer conversion is forbidden: pointer level differs
(source level 2 -> target level 1)
改用 rawptr(未定/通配指针,符合既有规则“任一侧 void*/未定(rawptr)允许”)。
|
2026-10-14 15:57:38 +08:00 |
|
TermiNexus
|
5b4bab59cc
|
chore(ViperOS): 合并落库内核侧在途改动并移除 vpsdk wiki 拷贝
VKernel / vpsdk / Apps / Libs 共 30 个源文件:内核与 SDK 侧的新语法适配及编译修正(含 bootinfo.vp / main.vp 位宽改 uint64、gfx.vp 前向引用改指针、devfs.vp 指针解引用赋值、elf.vp 跨模块函数取值等)。删除 vpsdk/wiki/*.md(14 文件,约 -8100 行):与仓库根 wiki 重复的拷贝,统一以根 wiki 为唯一来源。
|
2026-10-07 19:04:33 +08:00 |
|
TermiNexus
|
fc1a397c14
|
docs(vpsdk): 删除 wiki 拷贝里的 t.Anonymous 章节
与主 wiki(TransPyC/wiki,09fadf3)保持一致:`t.Anonymous` 已废弃且不再维护,
删除 02-type-system.md / 05-classes.md / all.md 中的「匿名结构体成员」章节。
|
2026-10-02 00:50:23 +08:00 |
|
TermiNexus
|
2a54e2bafb
|
清理了 t.CVoid
|
2026-09-16 16:07:04 +08:00 |
|
TermiNexus
|
a518f75b24
|
chore(vkernel): 重置基线 — 纳入 TPV codegen 修复配合的内核侧调整与既有工作区内容
- devfs.vp: string.split 传 PATH_BUFFER_SIZE(配合 split 新增容量参数)
- fat32_types.vp: lfn_extract 越界钳制(base+i > MAX_LFN 返回 -1)
- sheet.vp: gfx.Renderer 实参修正为 (fb, zb, w, h)(原单参导致 w/h=0 渲染空操作)
- 同批包含 VKernel 其余既有移植改动与 vpsdk/Apps/Libs 工作区内容
|
2026-09-11 14:27:01 +08:00 |
|
TermiNexus
|
cd1cc915c5
|
修正了build.py,重置基线
|
2026-09-11 10:34:34 +08:00 |
|
TermiNexus
|
b887d3d9c2
|
更新,部分功能可用
|
2026-08-27 09:47:47 +08:00 |
|
TermiNexus
|
20e7289c61
|
将 .py 和 .pyi 后缀名改为了 .vp 和 .vpi 后缀名
|
2026-07-30 16:34:26 +08:00 |
|
Viper
|
6813947181
|
Initial import of ViperOS
|
2026-07-19 12:38:20 +08:00 |
|