已合并
[Ubse] #fix# ubse修复asan扫描内存泄露 #1449
朱程成创建于 5 天前
[Ubse] #fix# ubse修复asan扫描内存泄露 #1449
已合并
Pull Request已成功合入, 合并人@openeuler-ci-bot
(感谢 朱程成 的贡献)atomgit-bot
5 天前 评论:
5 天前 评论:
变更摘要
本 PR 主要针对 Ubse 模块在 ASAN 扫描中发现的若干内存泄漏问题进行修复,核心改动集中在:syssentry 插件中工作线程与 xalarm 句柄的生命周期管理(以 join 替代 detach 并在 Stop 中主动注销以唤醒阻塞线程)、UbseTaskExecutor::Stop() 对队列残留任务的清理、UbseXml::SetXmlns 中游离命名空间节点的修复,以及 ReplyWhenChannelNotInMap 中错误路径的提前返回与 ubse_ring_buffer.h 新增的非阻塞出队接口。
主要改动
- xalarm 句柄生命周期修复(
sentry_observer.cpp/sentry_observer.h):将alarm_register* registerInfo_提升为类成员并由新增的registerMtx_互斥锁保护;Stop()中在锁内主动调用UnRegisterXalarm使阻塞的xalarmGetEventFunc立即以-ENOTCONN返回,并将worker->detach()改为worker->join(),避免线程访问已析构对象;SentryEventListen取句柄快照后再进入阻塞等待,防止长持锁阻塞Stop注销。 - 线程池停止时清理残留任务(
ubse_thread_pool.cpp+ubse_ring_buffer.h):UbseTaskExecutor::Stop()在工作线程 join 退出后,通过mRunnableQueue新增的TryDequeue非阻塞出队接口循环取出并DecreaseRef释放队列中未被消费的任务对象,仅释放对象而不执行 lambda,避免任务泄漏及触发已停止模块的依赖。 - 命名空间创建传参修复(
ubse_xml.cpp):SetXmlns中xmlNewNs的第一个参数由nullptr改为curNode,避免创建不挂载到节点、游离于 doc 之外导致泄漏的命名空间定义。 - 通道异常路径提前返回(
ubse_com_engine.cpp):ReplyWhenChannelNotInMap中将 traceId 获取、通道空指针检查及UBSE_COM_ERROR_CHANNEL_NULL回调提前到UBSHcomRequest构造之前,空通道时直接返回,避免后续流程在异常状态下继续执行。


atomgit-bot
5 天前 评论:
5 天前 评论:
5 天前 将hlinbo,shw030915,Gao_Victor,qmyyxtl,caowaterman设为审查人
5 天前 添加了label:sig/sig-UB-ServiceCore
此处折叠了182条消息 查看更多
openeuler-ci-bot
21 小时前 评论:
21 小时前 评论:
xuchenfeng
21 小时前 评论:
21 小时前 评论:
/lgtm
/approve


21 小时前 添加了label:lgtm-xuchenfengcleancode
openeuler-ci-bot
21 小时前 评论:
21 小时前 评论:
21 小时前 合入了pull request,合并节点 SHA:892675345b68aac1156364c3075ea483b346e487
当前PR是否有AI参与:
[x] 否
[ ] 是
__1. AI Agent 平台:
__2. AI 模型:
__3. Prompt上下文 :
参考:openEuler社区《生成式AI工具使用与开源贡献政策》
PR功能描述 / 为什么需要这个合入**:
该PR关联的issue
(格式为fixes #<issue号>, 或者resolves #<issue号>): fixes #
希望检视人员了解: