卷层整卷陈旧视图(dhara 一致滞回):真机三例打回出厂默认,size/mtime/内容三者自洽不可检出——根治归卷层 #85

Open
opened 2026-11-05 18:31:51 +08:00 by super_agent_bot · 0 comments
Collaborator

This is by an automated agent, not a human.

立单缘由

PR #82(配置引擎视图守卫,热重载打回缺陷的修复单)已在引擎侧拦截"旧/短/坏视图"一族:poll/save 三点校验(读长 == stat.size、读前后 re-stat 的 size/mtime 一致)+ 内容判据 s_view_bad。2026-11-05 台架补验实测仍有偶发打回,形态全部为引擎层按设计无法检出的一类:整卷视图陈旧但三者自洽——stat 路径与读路径给出的 (size, mtime, 内容) 相互一致、却整体滞后于盘上新写入。经 @wandering1 在 PR #82 批准按此推荐另立本卷层工单。

现象(真机台架 192.168.31.100,守卫固件,期间盘文件 RETR 逐字节核对始终健康)

时间 触发 观测
15:19:30 STOR 同尺寸改值文件 poll reload 照单应用滞后视图 → 全段打回出厂默认;同时 FTP 侧 RETR = 新文件
16:34:59 同上 同上(RAM 签名 = 全段默认 + poll=60)
16:58:38 HELD 解除后 STOR 健康文件 reload 自动应用(守卫"拒绝→重试→追平"链路已通),但应用到的仍是滞后整卷视图 → 再次打回默认
  • 佐证 A:15:21 台架抓到同尺寸全 0 旧映射块(与纯尺寸三点校验自洽)——已由 PR #82 补内容判据拦截并有机器钉(TC-CONFIG-061/062)。
  • 佐证 B:#73 证据包中"文件 1066B→986B(恰为 SNTP 上线前工厂模板尺寸)随后又恢复 1064B"的整卷回滚窗口。
  • 特征:持续整卷滞后、跨 2s 重试拍不自愈(基线随滞后视图刷新,之后盘再变更才重新触发);硬复位后全新挂载必然应用文件值(17:04 实机确认)。boot 读径与运行读径在同一卷上表现不同,挂载窗口的视图可信。

机理排查方向(dhara + FatFS 栈,NAND 卷)

  1. 疑点主向:dhara 读缓存/映射视图在写入 rename 后未彻底失效,读路径整卷回到旧镜像版本;stat 与之同源,故"一致地陈旧"。lftpd STOR 为 tmp+rename 语义,rename 目标 (size,mtime) 名义上原子——重点查 rename/program 提交路径上目标文件 LBA 的读缓存失效与 map 提交顺序。
  2. 卷层自检探针:写提交后立即回读同逻辑块做字节比对,不一致落 ERROR + 计数(低频采样版可先上观察)。
  3. 浸泡统计:每 10 分钟 STOR 变体 + RETR 字节比对 + RAM peek(0x200003F0 等),记录发生率与时刻分布,与写/GC 活动对齐(脚本在 PR #82 评论与 #73 线程证据包)。
  4. 顺带核 dhara map AOT/load 路径与 NAND 读扰重试统计(与 #45 dhara 重试自旋与卷锁评估 关联,勿重复造轮子)。

验收基准(建议)

运行期"三者自洽的滞后整卷视图"在卷层消失;或卷层对上层给出显式的视图失效/核对接口。引擎守卫(PR #82 HELD/WARN + 内容判据)作为最后承接面保留,不因本单关闭而移除。

现有缓解(不阻塞本单,工单存续期间继续有效)

  • 口径(#73 已发布):改过配置(界面或 FTP)后务必重启一次再视为生效。
  • 守卫日志口径:串口持续出现 [CFG] poll ... HELD / WARN ... held 即重启收敛(边界与重启兜底已写入 配置文件设计说明 §5.3 + 风险表)。

证据与关联

  • #73(评论 365):缺陷原始实录——运行中热重载打回出厂默认 + 保存吞段(10.5h 对时沉默元凶),及"改过配置(界面或 FTP)后务必重启一次"口径;证据包 report_final_补验.md(SNTP 补验工单固化)。
  • PR #82:引擎守卫 + 《台架补验实录》(评论 id 425,含上表时间戳、HELD/WARN 实机日志行、RAM 观测);守卫固件 ST-LINK 烧写 + 镜像 cmp 双确认,排除固件身份因素。
  • #79 / #81(已合并 1f940154):NAND 卷挂载修复——本问题是其之外、运行期窗口的独立卷层缺陷。
  • #45:dhara 重试自旋与卷锁评估(关联,不同问题)。
This is by an automated agent, not a human. ## 立单缘由 PR #82(配置引擎视图守卫,热重载打回缺陷的修复单)已在引擎侧拦截"旧/短/坏视图"一族:poll/save 三点校验(读长 == stat.size、读前后 re-stat 的 size/mtime 一致)+ 内容判据 `s_view_bad`。2026-11-05 台架补验实测仍有偶发打回,形态全部为引擎层按设计无法检出的一类:**整卷视图陈旧但三者自洽**——stat 路径与读路径给出的 (size, mtime, 内容) 相互一致、却整体滞后于盘上新写入。经 @wandering1 在 PR #82 批准按此推荐另立本卷层工单。 ## 现象(真机台架 192.168.31.100,守卫固件,期间盘文件 RETR 逐字节核对始终健康) | 时间 | 触发 | 观测 | |---|---|---| | 15:19:30 | STOR 同尺寸改值文件 | poll reload 照单应用滞后视图 → 全段打回出厂默认;同时 FTP 侧 RETR = 新文件 | | 16:34:59 | 同上 | 同上(RAM 签名 = 全段默认 + poll=60) | | 16:58:38 | HELD 解除后 STOR 健康文件 | reload 自动应用(守卫"拒绝→重试→追平"链路已通),但应用到的仍是滞后整卷视图 → 再次打回默认 | - 佐证 A:15:21 台架抓到**同尺寸全 0 旧映射块**(与纯尺寸三点校验自洽)——已由 PR #82 补内容判据拦截并有机器钉(TC-CONFIG-061/062)。 - 佐证 B:#73 证据包中"文件 1066B→986B(恰为 SNTP 上线前工厂模板尺寸)随后又恢复 1064B"的整卷回滚窗口。 - 特征:持续整卷滞后、跨 2s 重试拍不自愈(基线随滞后视图刷新,之后盘再变更才重新触发);**硬复位后全新挂载必然应用文件值**(17:04 实机确认)。boot 读径与运行读径在同一卷上表现不同,挂载窗口的视图可信。 ## 机理排查方向(dhara + FatFS 栈,NAND 卷) 1. **疑点主向**:dhara 读缓存/映射视图在写入 rename 后未彻底失效,读路径整卷回到旧镜像版本;stat 与之同源,故"一致地陈旧"。lftpd STOR 为 tmp+rename 语义,rename 目标 (size,mtime) 名义上原子——重点查 rename/program 提交路径上目标文件 LBA 的读缓存失效与 map 提交顺序。 2. 卷层自检探针:写提交后立即回读同逻辑块做字节比对,不一致落 ERROR + 计数(低频采样版可先上观察)。 3. 浸泡统计:每 10 分钟 STOR 变体 + RETR 字节比对 + RAM peek(`0x200003F0` 等),记录发生率与时刻分布,与写/GC 活动对齐(脚本在 PR #82 评论与 #73 线程证据包)。 4. 顺带核 dhara map AOT/load 路径与 NAND 读扰重试统计(与 #45 dhara 重试自旋与卷锁评估 关联,勿重复造轮子)。 ## 验收基准(建议) 运行期"三者自洽的滞后整卷视图"在卷层消失;或卷层对上层给出显式的视图失效/核对接口。引擎守卫(PR #82 HELD/WARN + 内容判据)作为最后承接面保留,不因本单关闭而移除。 ## 现有缓解(不阻塞本单,工单存续期间继续有效) - 口径(#73 已发布):**改过配置(界面或 FTP)后务必重启一次**再视为生效。 - 守卫日志口径:串口持续出现 `[CFG] poll ... HELD` / `WARN ... held` 即重启收敛(边界与重启兜底已写入 配置文件设计说明 §5.3 + 风险表)。 ## 证据与关联 - #73(评论 365):缺陷原始实录——运行中热重载打回出厂默认 + 保存吞段(10.5h 对时沉默元凶),及"改过配置(界面或 FTP)后务必重启一次"口径;证据包 report_final_补验.md(SNTP 补验工单固化)。 - PR #82:引擎守卫 + 《台架补验实录》(评论 id 425,含上表时间戳、HELD/WARN 实机日志行、RAM 观测);守卫固件 ST-LINK 烧写 + 镜像 cmp 双确认,排除固件身份因素。 - #79 / #81(已合并 1f940154):NAND 卷挂载修复——本问题是其之外、运行期窗口的独立卷层缺陷。 - #45:dhara 重试自旋与卷锁评估(关联,不同问题)。
super_agent_bot added the 排队 label 2026-11-05 18:31:51 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wandering1/STM32F4-Base#85