已开启
[任务]: 修复动态驱动注册失败及重复加载的句柄泄漏 #144
liuxingsen创建于 22 天前
openUBMC-robot
22 天前 评论:
22 天前 评论:
22 天前 将 chendanming 设为负责人
22 天前 issue状态由 待办的 改变为 进行中
22 天前 添加了label:sig/sig-framework
22 天前 关联了pull request:fix(driver): 清理注册失败句柄并拒绝重复加载
openUBMC-robot
22 天前 评论:
22 天前 评论:
欢迎来到 openUBMC 社区
Hey @xiaoxinglxs , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。
联系指引
有疑问可以联系 SIG: sig-framework ,
维护者是: @WeliveWelove, @zjp99 ,
优秀贡献者是: @chenshengfan, @leessential .


22 天前 修改了issue 的描述
22 天前 修改了issue 的描述
任务背景
device_driver::load_file()在动态库已打开但注册入口执行失败时,原先仍正常返回并保留句柄;对同一对象重复加载还可能覆盖旧句柄,失去对应的dlclose入口。失败驱动随后可能被工厂缓存。修复已提交 PR !416,源分支
xiaoxinglxs:0924-mem,提交57e786db2dcfa738605d31ff551e1914ecbcc2f3。audit/memory-20260924指向同一修改,不另建重复 PR。修改范围和清理顺序
dlopen前拒绝已持有句柄的对象,保留原句柄。dlclose,最后向调用者抛出框架异常;覆盖普通异常和throw 42等非标准异常。RTLD_NOLOAD验证注册失败后的卸载。本轮审查发现的测试阻塞
libs/common/tests/test_driver.cpp:436,462通过/proc/self/exe的父目录寻找libmemory_throwing_driver.so,但该源文件也进入common_test_lib。libs/devmon/tests/test_csr.cpp引用同一对象文件内的test_driver::create(),会将其中的插件测试一同注册到devmon_test。插件只生成在
libs/common/tests/,devmon_test却查找自身所在的libs/devmon/tests/,因此测试会先因文件不存在而在dlopen阶段失败。其 Meson 测试入口也未声明插件构建依赖。建议将独立插件回归拆到仅common_test编译的源文件,或者通过 Meson 注入正确路径并声明所有消费入口的依赖。此发现已通过源码/链接引用/构建布局静态核实,本轮尚未重新构建动态复现。远端 run #79 已核实对应
57e786db:单元测试明确列出NonstandardRegistrationExceptionClosesHandle和PluginDefinedRegistrationExceptionClosesHandle两条失败。实际入口为部署后的temp/bin/devmon_test;新增插件没有配置安装,日志也未列出该测试插件的部署。因此整改还要覆盖测试夹具安装/打包,不能只指向本机构建目录。本轮读到的日志片段不含原始dlopen异常全文,具体错误路径仍属于源码/部署布局分析。验收条件
common_test和实际复用测试对象的devmon_test均正确处理插件路径与依赖;构建目录入口和 CI 部署入口都具备所需插件夹具。验证边界
原
57e786db审计记录 ASAN 配置下DeviceDriverTest.*17/17、common_test408/408,以及真实.so卸载检查。原构建目录已不存在,本轮只完成源码审查和差异格式检查,未把历史结果当成本轮重跑。测试入口使用
std::quick_exit,不能将detect_leaks=1解释为已完成正常退出时的 LSAN 泄漏扫描。完整集成测试和目标板测试仍是后续建议。AI 辅助说明
OpenAI Codex,当前会话运行时 0.155.1;
gpt-6-astra负责本轮只读审查、任务说明及关联。提示词摘要:审视指定日期内存修复分支,复用已有 PR 并补齐任务 issue,区分已验证行为、静态发现和历史测试。本次未修改源码。