正常
Note 109 · panthor M2n:屏幕"竖条纹垃圾"定谳并根修——条带误全屏 + 页表自画像
日期:2026-09-11 · 战役七第二十八篇 · 上一节:note 108(迟发毒根修)
0. 摘要
用户质疑截图("你确定嘛?")→ MCP 读图定谳:屏上"竖条纹绿紫黑" 不是桌面,是双 bug 合成的垃圾。①bg-fallback 单维门(tw≥1024) 把 1027×35 damage 条带当背景 actor 拉伸满屏;②tex_read_px 的 AFBC body 偏移不校验——mutter 自管缓冲的残留垃圾头(GPU 页表页 PTE) 截 32 位后=小偏移,body=sp+小偏移=把头区所在的页表页当像素读出自 画像(屏上高频 007b61=PTE 高位 PA 0x617b000 域、4 连同低字节= PTE 属性字)。双修后:253 独立色真壁纸结构化上屏(65%/55% 翻页), 受控回归 7/7 绿。
1. 取证链(方法:MCP 读图 + 像素行程分析)
- MCP 客观描述=竖直条纹、无界面元素 → 不是"可见桌面"(note 76 证据门:此前的 56.8%/35 色直方图只证颜色不证内容)
- 像素行程分析定位伪像结构:16px 横向周期、近黑字段随 sb 递增 (000006→8→a→c)、4 连 run 同低字节只变高字节、007b61 高频复现 → 全部=内存元数据特征非图像特征
- log 反查画屏者:
scanout-mirror 1024x600← rjob 采样pending tex=1027x35 ptype=6 stride=410 hdr 全零/垃圾←bg-fallback tex=1027x35(误触发)→ 全屏恒等 quad 拉伸条带 - 同屏顶部 y<128 白底彩字=真渲染文本(351×82 LINEAR 正常路径), 与垃圾并存=两个写者的活体证据
2. 双修
| bug | 修 |
|---|---|
| 条带误全屏 | tw≥1024 || th≥1024 → tw≥1024 && th≥256(真背景 th≥533;条带 th≤100 实测) |
| 页表自画像 | tex_read_px:h04 非 0 且(非 64 对齐 或 ≥64MB)→ 返回 0。自家 body 偏移恒 64 对齐、壁纸 body 33MB 为最大真值 |
3. 验收
- 受控矩阵 7/7 PASS(2/8/32/64/256 全屏 + 32 子区域 + 64 偏移)
- REALIMG+GDM:
bg-fallback tex=1027x35归零(只剩 1024x600 屏幕类 ×6 + 3840x2160 壁纸类 ×1);bg-fullres 持续输出 - 屏:65.32%/254 色 → 55.02%/253 色(翻页双缓冲轮换),主色 67264a↔482665 两族=壁纸不同区域真采样;MCP 复判="结构化图像非 噪声(上紫下黑分层+水平条带)"
- 证据:sim/logs/m2n-wallpaper-structured.ppm(git)+ Windows 桌面 gpu-wallpaper-now.png
3.5 残余伪影(诚实边界)
亮度图显示 sb 级周期空洞(~16 sb 周期的空块)+ 覆盖率翻页波动 (65%↔55%)。真色马赛克≠无瑕壁纸;空洞来源候选:缝合写跳断页的 sb、pageflip 捕获瞬间。待下轮。
4. 工作流沉淀
- MCP 读图是内容验收的标准仪器(直方图只证颜色不证布局—— 本轮翻案靠它);本地路径直传可行,URL 传 CDN 会 400
- 像素行程分析(run-length + 周期检测)= 区分"图像 vs 元数据"的 快速判据:同低字节变高字节的 run=指针、递增小字段=偏移/序号
(战役七链:…M2n-visible✅→毒根修✅→屏幕垃圾根修✅→余=空洞磨平/vt1-nudge/字形/FAU)