已合并
fix: 修复 CheckAndMkdir 多进程竞态条件及 TraceManager 日志语法 #3580
duhua创建于 6月16日
fix: 修复 CheckAndMkdir 多进程竞态条件及 TraceManager 日志语法 #3580
已合并
duhua创建于 6月16日
duhua
duhua成员
6月16日

Pull Request

描述

修复两个问题:

1. 修复 CheckAndMkdir 多进程竞态条件(graph_metadef/base/utils/file_utils.cc

CheckAndMkdir 先通过 mmAccess2 检查目录是否存在,不存在时调用 mmMkdir 创建。在多进程并发调用场景下存在 TOCTOU(Time-of-Check to Time-of-Use)竞态:

进程 A: access(path) → 不存在
进程 B: access(path) → 不存在
进程 A: mkdir(path)  → 成功
进程 B: mkdir(path)  → 失败(EEXIST)→ 误报错误

mmMkdir 失败后增加 errno == EEXIST 判断,目录已存在时视为成功返回 0,避免误报。

2. 修复 TraceManager::Initialize 日志语法(graph_metadef/graph/utils/trace/trace_manager.cc

"Trace not enabled as failed create" 修正为 "Trace not enabled: failed to create",修正语法错误。

变更类型

关联的Issue

如何测试

  1. 多进程并发调用 CreateDir 创建同一目录,验证不再误报失败
  2. 设置 NPU_COLLECT_PATH 环境变量后运行,验证 trace 日志语法正确

核对清单

其他信息

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 duhua 的贡献)
duhuaduhua成员
6月16日 添加了label:enhancement
duhuaduhua成员
6月16日 创建了 pull request,commit 4a8417e3
CANN-robotCANN-robot成员
6月16日 添加了label:cann-cla/yes
duhua
duhua成员
6月16日 评论:

compile

likedislike
CANN-robot
CANN-robot成员
6月16日 评论:

CLA Signature Pass

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

likedislike
CANN-robot
CANN-robot成员
6月16日 评论:

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
repo-cann/ge stevenaw0, kobemini, yangyongqiang0606 (3/2) yangyongqiang0606 (1/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
duhuaduhua成员
6月16日 update merge request[project id: 8824148, iid: 3580, commit_id: 348bcdead0caae20071fd8707651ab374b85cdcb] virtual merging success
CANN-robotCANN-robot成员
6月16日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
6月16日 评论:

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

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_X86_compiler ✅ SUCCESS >>>>> >>>>>
Compile_X86_executor ✅ SUCCESS >>>>> >>>>>
Compile_X86_dflow ✅ SUCCESS >>>>> >>>>>
UT_Test_dflow ✅ SUCCESS
UT_Test_ge_common ✅ SUCCESS
UT_Test_parser ✅ SUCCESS
UT_Test_python ✅ SUCCESS >>>>>
UT_Test_rt ✅ SUCCESS
UT_Test_acl ✅ SUCCESS
UT_Test_autofuse ✅ SUCCESS
UT_Test_executor ✅ SUCCESS
UT_Test_autofuse_ascendc_api ✅ SUCCESS
ST_Test_dflow ✅ SUCCESS
ST_Test_ge_common ✅ SUCCESS
ST_Test_parser ✅ SUCCESS
ST_Test_python ✅ SUCCESS >>>>>
ST_Test_rt ✅ SUCCESS
ST_Test_autofuse ✅ SUCCESS
ST_Test_executor ✅ SUCCESS
ST_Test_hetero ✅ SUCCESS
ST_Test_autofuse_ascendc_api ✅ SUCCESS
ST_Test_autofuse_e2e ✅ SUCCESS
UT_Test_fe ✅ SUCCESS
UT_Test_tefusion ✅ SUCCESS
ST_Test_fe ✅ SUCCESS
ST_Test_tefusion ✅ SUCCESS
ST_Test_ge_common_atc ✅ SUCCESS
UT_Test_Report_graphengine ✅ SUCCESS >>>>>
UT_Test_Report_ge_executor_c ✅ SUCCESS >>>>>
UT_Test_Report_ge_autofuse ✅ SUCCESS >>>>>
ST_Test_Report_graphengine ✅ SUCCESS >>>>>
ST_Test_Report_ge_executor_c ✅ SUCCESS >>>>>
ST_Test_Report_ge_autofuse ✅ SUCCESS >>>>>
UT_Test_Report_fe ✅ SUCCESS >>>>>
ST_Test_Report_fe ✅ SUCCESS >>>>>

[2026-06-16 21:20:27]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
6月16日 评论:

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

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_ARM_compiler ✅ SUCCESS >>>>> >>>>>
Compile_ARM_executor ✅ SUCCESS >>>>> >>>>>
Compile_ARM_dflow ✅ SUCCESS >>>>> >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_A900_npupool ✅ SUCCESS >>>>>

[2026-06-16 21:19:28]    CI执行结束

likedislike
CANN-robotCANN-robot成员
6月16日 添加了label:api-check-pass
CANN-robot
CANN-robot成员
6月16日 评论:

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

任务名称状态日志下载链接
codecheck_Pr ✅ SUCCESS
codecheck ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
codecheck_dt ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>> >>>>>
StaticCheck_codespell_check ✅ SUCCESS
StaticCheck_link_validity_check ✅ SUCCESS
StaticCheck_resource_existence_check ✅ SUCCESS
StaticCheck_tag_closed_check ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS

[2026-06-16 21:19:33]    CI执行结束

likedislike
CANN-robotCANN-robot成员
6月16日 删除了label:api-check-pass
CANN-robotCANN-robot成员
6月16日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
6月16日 添加了label:ci-pipeline-passed
duhuaduhua成员
6月25日 virtual merging failed, update merge request[project_id: 8824148, iid: 3580, target_commit_sha: b08d81dc6553af57095f5e73cfb661fd03e0bc23], message: MR has no commits
duhuaduhua成员
6月25日 强制推送  122 个提交:b08d81dc-122 commits from branch develop
duhuaduhua成员
6月25日 virtual merging failed, update merge request[project_id: 8824148, iid: 3580, target_commit_sha: b08d81dc6553af57095f5e73cfb661fd03e0bc23], message: MR has no commits
CANN-robot
CANN-robot成员
6月25日 评论:

Warning

The PR commit(s) can not be got, please check it!

likedislike
duhuaduhua成员
6月25日 update merge request[project id: 8824148, iid: 3580, commit_id: 2acdc4987baf9f2122bc48cc93f8a82a7bf8f5e5] virtual merging success
duhuaduhua成员
6月25日 推送  1 个提交:9ce80701-修改日志及多线程引发的问题
duhuaduhua成员
6月25日 update merge request[project id: 8824148, iid: 3580, commit_id: 295fcd943459323138bf0d485c92a92f7411a776] virtual merging success
CANN-robotCANN-robot成员
6月25日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
6月25日 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-pipeline-passed.

likedislike
duhua
duhua成员
6月25日 评论:

compile

likedislike
duhuaduhua成员
6月25日 update merge request[project id: 8824148, iid: 3580, commit_id: af51b3a19b79f35bd5c2de2564025ff8ca943885] virtual merging success
duhuaduhua成员
6月25日 修改标题为 “fix: 修复 CheckAndMkdir 多进程竞态条件及 TraceManager 日志语法”,原标题为“【PR】: 简要描述”
duhuaduhua成员
6月25日 修改了pull request 的描述
CANN-robotCANN-robot成员
6月25日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
6月25日 评论:

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

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_X86_compiler ✅ SUCCESS >>>>> >>>>>
Compile_X86_executor ✅ SUCCESS >>>>> >>>>>
Compile_X86_dflow ✅ SUCCESS >>>>> >>>>>
UT_Test_dflow ✅ SUCCESS
UT_Test_ge_common ✅ SUCCESS
UT_Test_parser ✅ SUCCESS
UT_Test_python ✅ SUCCESS >>>>>
UT_Test_rt ✅ SUCCESS
UT_Test_acl ✅ SUCCESS
UT_Test_autofuse ✅ SUCCESS
UT_Test_executor ✅ SUCCESS
UT_Test_autofuse_ascendc_api ✅ SUCCESS
ST_Test_dflow ✅ SUCCESS
ST_Test_ge_common ✅ SUCCESS
ST_Test_parser ✅ SUCCESS
ST_Test_python ✅ SUCCESS >>>>>
ST_Test_rt ✅ SUCCESS
ST_Test_autofuse ✅ SUCCESS
ST_Test_executor ✅ SUCCESS
ST_Test_hetero ✅ SUCCESS
ST_Test_autofuse_ascendc_api ✅ SUCCESS
ST_Test_autofuse_e2e ✅ SUCCESS
UT_Test_fe ✅ SUCCESS
UT_Test_tefusion ✅ SUCCESS
ST_Test_fe ✅ SUCCESS
ST_Test_tefusion ✅ SUCCESS
ST_Test_ge_common_atc ✅ SUCCESS
UT_Test_Report_graphengine ✅ SUCCESS >>>>>
UT_Test_Report_ge_executor_c ✅ SUCCESS >>>>>
UT_Test_Report_ge_autofuse ✅ SUCCESS >>>>>
ST_Test_Report_graphengine ✅ SUCCESS >>>>>
ST_Test_Report_ge_executor_c ✅ SUCCESS >>>>>
ST_Test_Report_ge_autofuse ✅ SUCCESS >>>>>
UT_Test_Report_fe ✅ SUCCESS >>>>>
ST_Test_Report_fe ✅ SUCCESS >>>>>

[2026-06-25 21:49:42]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
6月25日 评论:

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

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_ARM_compiler ✅ SUCCESS >>>>> >>>>>
Compile_ARM_executor ✅ SUCCESS >>>>> >>>>>
Compile_ARM_dflow ✅ SUCCESS >>>>> >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_A900_npupool ✅ SUCCESS >>>>>

[2026-06-25 21:44:00]    CI执行结束

likedislike
duhuaduhua成员
6月25日 修改标题为 “fix: 修复 CheckAndMkdir 多线程竞态条件及 TraceManager 日志语法”,原标题为“fix: 修复 CheckAndMkdir 多进程竞态条件及 TraceManager 日志语法”
duhuaduhua成员
6月25日 修改了pull request 的描述
CANN-robot
CANN-robot成员
6月25日 评论:

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

任务名称状态日志下载链接
codecheck_Pr ✅ SUCCESS
codecheck ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
codecheck_dt ✅ SUCCESS >>>>>
codecheck_precommit ⚠️ WARNING >>>>> >>>>>
StaticCheck_codespell_check ✅ SUCCESS
StaticCheck_link_validity_check ✅ SUCCESS
StaticCheck_resource_existence_check ✅ SUCCESS
StaticCheck_tag_closed_check ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS

[2026-06-25 21:42:34]    CI执行结束

likedislike
CANN-robotCANN-robot成员
6月25日 添加了label:api-check-pass
CANN-robotCANN-robot成员
6月25日 删除了label:api-check-pass
CANN-robotCANN-robot成员
6月25日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
6月25日 添加了label:ci-pipeline-passed
duhuaduhua成员
6月26日 修改标题为 “fix: 修复 CheckAndMkdir 多进程竞态条件及 TraceManager 日志语法”,原标题为“fix: 修复 CheckAndMkdir 多线程竞态条件及 TraceManager 日志语法”
duhuaduhua成员
6月26日 修改了pull request 的描述
GengChao
GengChao成员
6月26日 评论:

/lgtm

likedislike
黄桂军
黄桂军成员
6月26日 评论:

/lgtm

likedislike
黄桂军
黄桂军成员
6月26日 评论:

【MR评价】评价分数:3,
评价意见:
编码规范遵守度:无编码规范问题;
代码设计:不涉及代码设计;
DT质量:基本逻辑DT测试覆盖充足;

likedislike
CANN-robotCANN-robot成员
6月26日 添加了label:lgtm
yangyongqiang
yangyongqiang成员
6月26日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
6月26日 添加了label:approved
CANN-robotCANN-robot成员
6月26日 合入了pull request