Merged
【84cb464e7da8942fc069941149941e40】fix(csr1): retain task owners only during active runs #1329
【84cb464e7da8942fc069941149941e40】fix(csr1): retain task owners only during active runs #1329
Merged
liuxingsenAdd on 25 days ago
liuxingsenCollaborators
25 days ago

当前PR是否有AI参与:

[x ] 否
[] 是
__1. AI Agent 平台:
__2. AI 模型:
__3. Prompt上下文 :

PR功能描述 / 为什么需要这个合入:

空闲注册的调度任务长期强持有宿主,会与宿主持有的任务形成引用环,使析构注销无法开始。任务执行、异步完成与注销又需要各自保留必要的生命周期保证。宿主最终释放期间,两处 dispatcher 的 shared_from_this 还可能触发 noexcept 终止;已失效宿主的过期任务会导致调度器每 10ms 无效重排。

修改方案:

  • 空闲任务保存弱引用,仅在实际运行至异步完成期间持有宿主;保留注销、当前回调内注销、重注册与不可随宿主独立释放任务的等待边界。
  • Aggregate 仅为已托管宿主保存弱引用。NormalDispatcher、SmcDfxDispatcher 在 owner_guard 调用时通过 weak_from_this().lock() 尝试保活,保留空 owner、未托管 owner 和先设置 owner 后建立托管的行为。
  • 宿主已最终释放时,将对应 next_run_ms 设为 UINT64_MAX,等待既有析构注销删除条目,不再为过期项反复唤醒。弱引用不保证裸指针存储有效,也不允许与析构并发注册。
  • 独立基于 origin/main@76bb48b06999e6428faf123176efa1742f65df5d,保留单个主题提交;服务版本仍为本 PR 既有 1.2.531,CHANGELOG 沿用同一条目,不再次升版。
  • 具体修改前后代码、C 的引用计数/回调 ctx 对照及收尾时序见 tests/README.md。

验证方案:

重新编译本主题 6 个测试程序及依赖,在私有 mount/IPC/network/PID 命名空间串行运行并检查逐程序 XML。执行前后冻结完整源码树,核对最终提交树一致性,保存日志及测试二进制哈希。

测试建议:

在正式依赖和目标板上补充持续启停、异步注销、设备卸载及多轮压力测试,并在实际 ASan/UBSan 插桩构建验证。以上新增目标板、完整产品和 sanitizer 验证本轮未执行。

自验证报告:

  • 当前提交 9d5247e6264d4a1b9bb3a410ab6b4789750c8478:6 个程序、523/523 个用例通过;失败、错误、跳过和禁用均为 0。
  • 修改前,失效宿主用例确认 timer 仍被重排;两个 dispatcher 最终释放用例分别触发 SIGABRT,报告 attempt to add reference to a destroyed object。先设置 owner 后托管用例在旧实现已通过;修复后全部纳入整组通过。
  • 本次实际执行工作树 HEAD 为 56ab83ba1b9d1d52b64bab27bc6ba6689fcc6982,包含待提交修改;执行前后完整树均为 af1b8025b47d37ccfa3bab1a2f0d6ccab9e8b206,且与当前提交的 Git tree 完全一致。此为冻结源码等同性证明,不称为提交后重跑。
  • git diff --check、官方文件头检查及仓库提交钩子通过。
  • Linux 宿主 plain 构建,断言启用、tests=true、unidev=true,无 sanitizer;复用 libmcpp 缓存,核对头文件 checkout 10829fb9,缓存二进制缺少完整构建溯源。本次结果不替代目标环境验证或历史多轮故障闭环。

该PR关联的issue

fixes #754

希望检视人员了解:

本 PR 是原拆分任务的 CSR1 宿主引用主题。本轮仅两个既定主题承担版本/CHANGELOG 更新;后续主线变化时正常整合,单个 PR 不重复升版。两条本轮检视意见均已以代码和回归处理;未执行合入或批准命令。

likedislike
Pull Request has been successfully merged by openUBMC-robot.
(Thank you for liuxingsen's contribution.)
LliuxingsenCollaborators
25 days ago Created pull request, commit 307f6708
LliuxingsenCollaborators
25 days ago Associated issue: [任务]: 整合驱动内存边界和异步生命周期修复并完成回归验收,[任务]: 修复 CSR1 调度任务空闲强引用环、异步注销与重注册边界,并通过弱引用保护 Aggregate 宿主最终释放
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: sig/sig-component-drivers
openUBMC-robot
openUBMC-robotCollaborators
25 days ago Comments:

欢迎来到 openUBMC 社区

Hey @xiaoxinglxs , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。

联系指引

有疑问可以联系 SIG: sig-component-drivers ,
维护者是: @dongyushan, @net_swift_wangchen, @sam_h1973, @u012924942, @weixin_37569011, @xiaoxinglxs ,
优秀贡献者是: @adellonzzy, @avery-j, @changxingOpenUBMC, @chenshengfan, @dli_bmc, @huangjiapei, @leessential, @net_swift_tianwen, @xiapengc1, @yelvsub .

likedislike
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: ai-co-authored
59 messages are collapsed here。 See more
openUBMC-robot
openUBMC-robotCollaborators
25 days ago Comments:

  • 标签 lgtm, approved 已被添加. 这意味着 leessential 已经检查过代码了. 👋
Tips
  • 如果PR还没有被合入, 请评论 /check-pr 进行检查. 😄
likedislike
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Closed associated issue
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Merged pull request, merge node SHA: 8f03043737fd6854dfb9deb0a6999817cbbc91e0
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Change title to "【84cb464e7da8942fc069941149941e40】fix(csr1): retain task owners only during active runs", originally titled "fix(csr1): retain task owners only during active runs".
openubmc-ci-botCollaborators
25 days ago Comments:

This component has been successfully published.

likedislike