已合并
reinit log file heads with child PID after fork() #1127
zhangjie创建于 3月23日
reinit log file heads with child PID after fork() #1127
已合并
zhangjie创建于 3月23日
zhangjie
zhangjie成员
3月23日

描述

reinit log file heads with child PID after fork(),修复plog带pid的文件中含有其他pid的日志内容

关联的Issue

NA

测试

本地冒烟和UT

文档更新

NA

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhangjie 的贡献)
zhangjiezhangjie成员
3月23日 创建了 pull request,commit 119743b7
CANN-robot
CANN-robot成员
3月23日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
src/dfx zhuliangying, chenhao_1209 (2/2) zhuliangying (1/1)
tests/ut/slog zhuliangying, chenhao_1209 (2/2) zhuliangying (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

newstarzj, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robotCANN-robot成员
3月23日 添加了label:cann-cla/yes
CANN-robotCANN-robot成员
3月23日 将chenhao_1209,zhuliangying,wangtao43,zhangpengpeng8,yanmingxiang,Reyn52166,derekxu,tingwood设为评审人
CANN-robotCANN-robot成员
3月23日 将chenhao_1209,zhuliangying设为审查人
zhangjie
zhangjie成员
3月23日 评论:

compile

likedislike
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
3月23日 评论:

流水线任务触发成功
任务链接 [95a085e438f3405494a25af045566cf8][流水线指导]

任务名称状态日志下载链接
codecheck ❌ FAILED
SCA ✅ SUCCESS >>>>>
anti_virus ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_acl ⚪ ABORTED >>>>>
UT_Test_rts ⚪ ABORTED >>>>>
UT_Test_rts_c ⚪ ABORTED >>>>>
UT_Test_platform ⚪ ABORTED >>>>>
UT_Test_qs ⚪ ABORTED >>>>>
UT_Test_aicpusd ⚪ ABORTED >>>>>
UT_Test_tsd ⚪ ABORTED >>>>>
UT_Test_dfx ⚪ ABORTED >>>>>
UT_Test_mmpa ⚪ ABORTED >>>>>

[2026-03-23 19:43:26]    CI执行失败

likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-failed
zhangjie
zhangjie成员
3月23日 评论:

compile

likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
3月23日 评论:

流水线任务触发成功
任务链接 [f9c99b339bcf427fb7c627cf96d9c7c2][流水线指导]

任务名称状态日志下载链接
codecheck ❌ FAILED
SCA ✅ SUCCESS >>>>>
anti_virus ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_acl ⚪ ABORTED >>>>>
UT_Test_rts ⚪ ABORTED >>>>>
UT_Test_rts_c ⚪ ABORTED >>>>>
UT_Test_platform ⚪ ABORTED >>>>>
UT_Test_qs ⚪ ABORTED >>>>>
UT_Test_aicpusd ⚪ ABORTED >>>>>
UT_Test_tsd ⚪ ABORTED >>>>>
UT_Test_dfx ⚪ ABORTED >>>>>
UT_Test_mmpa ⚪ ABORTED >>>>>

[2026-03-23 19:57:09]    CI执行失败

likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-failed
zhangjie
zhangjie成员
3月23日 评论:

🤖 CANN 代码审查报告

PR: #1127 - reinit log file heads with child PID after fork()
严重性: ✅ Low
审查时间: 2026-03-23 20:04


📊 审查结论

✅ 建议合入

  • 严重性: Low
  • 代码质量: 优秀
  • 内存安全: ✅ 无风险
  • 安全性: ✅ 无漏洞
  • 测试覆盖: 完整
  • 文档完整性: 完整

这是一个高质量的 bug 修复,解决了 fork() 后子进程日志文件名包含父进程 PID 的问题。代码使用安全函数,注释详尽,测试覆盖全面。


📋 修改概述

修复 fork() 后子进程继承父进程 PID 导致日志文件冲突的问题。

  • 修改文件: 5个 (+424行, -0行)
  • 核心变更:
    • plog_file_mgr.c: 新增 PlogReinitFileHeadsForChild() 函数,重新初始化日志文件头
    • plog_file_mgr.h: 添加新函数声明
    • plog_host_log.c: 在 fork 回调中调用新函数
    • plog_file_mgr_utest.cc: 新增 7 个单元测试用例

🔍 代码质量检查

1. 内存安全 ✅

  • 内存泄漏: 无风险 - 无动态内存分配
  • 指针操作: 安全 - 所有指针访问前都有 NULL 检查
  • 动态分配: 不适用
  • 资源管理: 合理 - 使用栈上变量

2. 安全性 ✅

  • 输入验证: 完整 - 检查 g_plogFileList 非空
  • 边界检查: 完整 - 使用 memset_s、snprintf_s、strcpy_s 安全函数
  • 潜在漏洞: 无

3. 可读性 ✅

  • 代码清晰度: 优秀 - 逻辑清晰,结构分明
  • 命名规范: 符合 - 函数名 PlogReinitFileHeadsForChild 准确描述功能
  • 注释完整性: 完整 - 包含详细的 bug 原因说明和修复方案

4. 逻辑正确性 ✅

  • 算法逻辑: 正确 - 遍历所有 host 和 device 日志列表更新 PID
  • 边界条件: 处理完整 - 检查数组索引范围
  • 影响范围: 明确 - 仅影响 fork 后的子进程

💡 改进建议

  1. 文档: 建议在 PR 描述中补充复现步骤和影响范围
  2. 性能: PlogReinitFileHeadsForChild() 在 fork 临界区调用,已足够轻量

✅ 代码亮点

  • 问题定位准确:清楚说明了 fork() 后 g_plogFileList 被原样继承的根本原因
  • 安全函数使用:全部使用安全版本的字符串操作函数
  • 测试覆盖全面:7 个测试用例覆盖空指针安全、PID 更新、文件名清除、幂等性、fork 集成测试
  • 注释详尽:根因分析和修复方案都有详细说明
  • 包含回归测试:TC-07 专门验证不调用 reinit 时 bug 仍然存在

总体评价: 高质量的 bug 修复,代码规范,测试充分,建议合入。

likedislike
zhangjie
zhangjie成员
3月23日 评论:

compile

likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
3月23日 评论:

流水线任务触发成功
任务链接 [9faad6b5e9c54e3ebb6764d29876fbfe][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
anti_virus ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_acl ❌ FAILED >>>>>
UT_Test_rts ❌ FAILED >>>>>
UT_Test_rts_c ✅ SUCCESS >>>>>
UT_Test_platform ✅ SUCCESS >>>>>
UT_Test_qs ✅ SUCCESS >>>>>
UT_Test_aicpusd ✅ SUCCESS >>>>>
UT_Test_tsd ✅ SUCCESS >>>>>
UT_Test_dfx ✅ SUCCESS >>>>>
UT_Test_mmpa ✅ SUCCESS >>>>>
likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-failed
zhangjie
zhangjie成员
3月23日 评论:

compile

likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
3月23日 评论:

流水线任务触发成功
任务链接 [28f921ea62a9492ebe25ed0bd1d6b41c][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
anti_virus ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_acl ✅ SUCCESS >>>>>
UT_Test_rts ⏳ waiting >>>>>
UT_Test_rts_c ✅ SUCCESS >>>>>
UT_Test_platform ✅ SUCCESS >>>>>
UT_Test_qs ✅ SUCCESS >>>>>
UT_Test_aicpusd ✅ SUCCESS >>>>>
UT_Test_tsd ✅ SUCCESS >>>>>
UT_Test_dfx ✅ SUCCESS >>>>>
UT_Test_mmpa ✅ SUCCESS >>>>>
likedislike
zhuliangying成员
3月23日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
3月23日 添加了label:approved
chenhao_1209成员
3月23日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
3月23日 添加了label:lgtm
zhangjie
zhangjie成员
3月23日 评论:

compile

likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
3月23日 评论:

流水线任务触发成功
任务链接 [5a2ef2ecb97c4e91b3e7d7772ea1b36b][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
anti_virus ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_acl ✅ SUCCESS >>>>>
UT_Test_rts ✅ SUCCESS >>>>>
UT_Test_rts_c ✅ SUCCESS >>>>>
UT_Test_platform ✅ SUCCESS >>>>>
UT_Test_qs ✅ SUCCESS >>>>>
UT_Test_aicpusd ✅ SUCCESS >>>>>
UT_Test_tsd ✅ SUCCESS >>>>>
UT_Test_dfx ✅ SUCCESS >>>>>
UT_Test_mmpa ✅ SUCCESS >>>>>

[2026-03-23 21:56:44]    CI执行结束

likedislike
CANN-robotCANN-robot成员
3月23日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
3月23日 添加了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
3月23日 评论:

Review Guide

This pull-request passes review.
Committers who wrote a comment of /approve are: zhuliangying.
Reviewers who wrote a comment of /lgtm are: zhuliangying, chenhao_1209.

likedislike
CANN-robotCANN-robot成员
3月23日 合入了pull request