Skip to content

MFAA队列显示游标漂移:启动检测伪队列的完成事件被误用作队列推进信号(超前一格+队尾提前停止+用时少算) #433

Description

@sunyink

拆分自 #422 的追评(该 issue 主体是资源侧的「日常广场段永动循环」,与本条无关)。
原始报告见 #422 (comment)
与其修正结论 #422 (comment) ,由 @BebopSpikeSpiegel 提供。
本条属 MFAAvalonia GUI 侧(程序版本 v2.12.2),如需转移到上游仓库请酌情路由。

现象

「任务管线合并」模式下,GUI 队列的显示游标全程超前一格:GUI 标签显示第 N+1 项,窗口里实跑的是 maafw 第 N 个任务(双日志台账逐位可证)。

三个症状:

  1. 游标超前一格:k=2..12 每个「开始任务」标签的打印时刻,都与 maafw 前一位任务的 task start 毫秒级重合(1~4ms,逐位核对)。
  2. 队尾提前收场:提前奏乐 +「停止 maafw 任务」。实录中该停止与末任务的真实启动仅差 11ms,险些误杀正在跑的任务。
  3. 完成横幅「用时」少算末任务段:07-27 实录少 163 秒,恰等于被漏计的套利真实工作时长。

触发条件(已修正)

MFAA 启动时的自更新检测(「启动检测/更新资源」伪队列)的完成事件,与用户队列的执行期发生时间重叠时,被误用作队列推进信号。

  • 漂移会话实录(07-27 00:50 最典型):用户在应用启动约 18 秒后点「启动任务」,启动检测尚在飞行;检测的「启动检测完成(异步)」落地后 +50ms 即多发一次「队列任务开始(异步)」——此刻任务 1 尚无完成事件——游标就此超前一格。
  • 未漂移会话的共同点:检测在点击前已独立完成(缓冲 4 秒 ~ 98 秒不等),与队列生命周期错开。

被证据推翻的旧假说

原先怀疑「队首启动项在游戏已运行时秒完成」导致漂移,经双日志逐日对齐后推翻:漂移组 StartGame 真实耗时横跨 16.4~73.2 秒(另有两例因窗口未就绪从未完成),与未漂移对照的 52.4 秒高度重叠;游戏已在位/未就绪两种状态下漂移均有发生。

影响范围

  • 程序版本 v2.12.2;该模式自 07-23 起存在。
  • 语料中最早可见于 07-27(观测左界,非近期回归)。

用户侧规避

启动 MFAA 后,等其自身启动检测的完成横幅出现(约 8~10 秒)再点「启动任务」,错开即不触发。

修复方向

队列游标只应由队列自身任务的完成事件推进,忽略启动检测/更新伪队列的完成信号。

完整双端日志时间线可由报告者提供。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions