| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: libascend_trace coredump 场景堆栈捕获增强(sigaltstack/SA_ONSTACK/sa_mask)(#699) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !3628 merge feature-issue-699-coredump into master feat: libascend_trace coredump 场景堆栈捕获增强(sigaltstack/SA_ONSTACK/sa_mask)(#699) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 实现 issue #699 需求项3:增强 coredump 场景的堆栈捕获能力。 **问题**:栈溢出(stack overflow)型 SIGSEGV 会耗尽线程栈,信号处理函数无栈可用,导致捕获链 100% 失效。此外,多线程并发崩溃时其他致命信号可能打断 handler 导致状态混乱。 **解决方案**: 1. **sigaltstack**:新增 64KB 专用信号栈,在 TraceSignalInit 中调用 sigaltstack() 注册,确保栈溢出时 handler 有独立栈可运行。 2. **SA_ONSTACK**:各致命信号 sa_flags |= SA_ONSTACK,使 handler 在专用栈上执行。 3. **sa_mask**:各信号 sa_mask 填充全部被管理致命信号,处理期间阻塞其它致命信号,防止并发崩溃打断 handler。 **兼容性约束**:落盘 STACKTRACE_LOG_* 格式/路径/内容、ADIAG_*、RbLog 均未改动。sigaltstack/SA_ONSTACK/sa_mask 为 async-signal-safe 的内核态行为,不触碰落盘格式。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新 - [ ] ♻️ 重构 - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/699 ## 如何测试 1. 构建并运行 atrace 单元测试:bash tests/build_ut.sh --ut=atrace -j8 2. 预期:utrace_utest 全部通过。实测 **260 tests from 19 test suites ran,[ PASSED ] 260 tests,[ FAILED ] 计数为 0**。 3. 新增 TestTraceSignalInit_AltStack:验证 TraceSignalInit 后 alt stack 已注册(非 SS_DISABLE、ss_sp 非空、ss_size > 0)。 4. 常规信号回归:触发 SIGSEGV/SIGABRT 常规崩溃,捕获与落盘行为与增强前一致。 ## 变更文件 ### Diff 摘要 text ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 本 PR 为 issue #699 的第 2 个 PR(需求项3)。需求项1(删除 ENABLE_SCD 宏)已通过 PR !3550 合入。需求项2(日志整改)和需求项4(prctl 强校验优化)将在后续 PR 提交。 ## 风险和遗留问题 - 本 PR 修改信号处理核心逻辑,风险较高。已通过完整 UT 回归(260/260 通过)验证不破坏现有行为。 - sigaltstack 使用静态数组(64KB),为编译期常量,避免新版 glibc SIGSTKSZ 为运行时值的问题。 - 栈溢出的端到端集成验证需在真实环境补充(UT 难以安全模拟栈溢出)。 See merge request: cann/runtime!3628 | 1 个月前 | |
feat: 优化动态库构造函数以规避glibc低版本bug (#697) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !3482 merge feature-issue-697 into master feat: 优化动态库构造函数以规避glibc低版本bug (#697) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 描述 - 实现摘要: 背景:glibc<=2.33时,so构造函数中创建线程会触发glibc的TLS初始化竞争条件。为了避免该问题,需要做优化 - 变更文件: - src/dfx/log/liblog/slog/plog/plog_host_log.c - src/dfx/trace/awatchdog/awatchdog_core.c - src/dfx/trace/awatchdog/awatchdog_monitor.c - src/dfx/trace/awatchdog/awatchdog_monitor.h - tests/ut/atrace/ut/awatchdog/awatchdog_monitor_utest.cc - tests/ut/atrace/ut/awatchdog/awatchdog_utest.cc - tests/ut/slog/ut/ep/alog_host/testcase/plog_host_log_utest.cc ### Diff 摘要 text src/dfx/log/liblog/slog/plog/plog_host_log.c | 3 +- src/dfx/trace/awatchdog/awatchdog_core.c | 10 +- src/dfx/trace/awatchdog/awatchdog_monitor.c | 7 +- src/dfx/trace/awatchdog/awatchdog_monitor.h | 6 +- .../atrace/ut/awatchdog/awatchdog_monitor_utest.cc | 4 +- tests/ut/atrace/ut/awatchdog/awatchdog_utest.cc | 132 ++++++++++++++------- .../ep/alog_host/testcase/plog_host_log_utest.cc | 91 ++++++++++++-- 7 files changed, 186 insertions(+), 67 deletions(-) ## 变更类型 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 关联的Issue https://gitcode.com/cann/runtime/issues/697 ## 如何测试 - 测试结论: PASS - 检测到代码变更文件 7 个: src/dfx/log/liblog/slog/plog/plog_host_log.c, src/dfx/trace/awatchdog/awatchdog_core.c, src/dfx/trace/awatchdog/awatchdog_monitor.c, src/dfx/trace/awatchdog/awatchdog_monitor.h, tests/ut/atrace/ut/awatchdog/awatchdog_monitor_utest.cc, tests/ut/atrace/ut/awatchdog/awatchdog_utest.cc, tests/ut/slog/ut/ep/alog_host/testcase/plog_host_log_utest.cc - 测试日志包含通过信号 - 测试日志覆盖计划测试项 11 条 ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 ## 风险和遗留问题 - (none) See merge request: cann/runtime!3482 | 1 个月前 | |
Initial commit | 8 个月前 | |
add opensource code Co-authored-by: duanpengliang<duanpengliang@huawei.com> | 7 个月前 | |
feat:清理DFX冗余头文件 Co-authored-by: yring_8<yangrui1@huawei.com> # message auto-generated for no-merge-commit merge: !2735 merge master into master feat:清理DFX冗余头文件 Created-by: yring_8 Commit-by: yring_8 Merged-by: cann-robot Description: # Pull Request ## 描述 统一 DFX 模块头文件的维护位置,删除 adump、msprof、trace 和 log 模块中的冗余副本。 主要变更: - 删除 adump、msprof、trace 目录下重复及无归属的头文件。 - 将兼容路径下的重复头文件改为软链接,保留原有引用方式。 - 将 trace 内部头文件迁移至 src/dfx/trace/inc/toolchain。 - 以 include/dfx/base/log_types.h、include/external/acl/acl_prof.h 等文件作为唯一实体。 - 调整 CMake include 路径及 adump_headers 等接口依赖。 - 调整打包配置,从实体文件位置复制头文件,确保安装包中的兼容目录仍包含普通实体文件。 - 更新 msprof、atrace、runtime 和 slog 单测的头文件依赖路径。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. 执行全量构建: ```bash sh build.sh 2. 执行相关模块单元测试: bash tests/build_ut.sh --ut=adump -c bash tests/build_ut.sh --ut=msprof -c bash tests/build_ut.sh --ut=atrace -c 3. 检查打包 staging 目录,确认兼容路径中的头文件为实体文件,并与对应源文件内容一致。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 提交 ID:978532b3f84c506f4e39d613f1ee2ad750dbc0cf - 兼容目录仍保留原有头文件访问路径。 - 打包时从唯一实体文件位置复制,避免将无效软链接带入安装包。 See merge request: cann/runtime!2735 | 2 个月前 | |
feat:清理DFX冗余头文件 Co-authored-by: yring_8<yangrui1@huawei.com> # message auto-generated for no-merge-commit merge: !2735 merge master into master feat:清理DFX冗余头文件 Created-by: yring_8 Commit-by: yring_8 Merged-by: cann-robot Description: # Pull Request ## 描述 统一 DFX 模块头文件的维护位置,删除 adump、msprof、trace 和 log 模块中的冗余副本。 主要变更: - 删除 adump、msprof、trace 目录下重复及无归属的头文件。 - 将兼容路径下的重复头文件改为软链接,保留原有引用方式。 - 将 trace 内部头文件迁移至 src/dfx/trace/inc/toolchain。 - 以 include/dfx/base/log_types.h、include/external/acl/acl_prof.h 等文件作为唯一实体。 - 调整 CMake include 路径及 adump_headers 等接口依赖。 - 调整打包配置,从实体文件位置复制头文件,确保安装包中的兼容目录仍包含普通实体文件。 - 更新 msprof、atrace、runtime 和 slog 单测的头文件依赖路径。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. 执行全量构建: ```bash sh build.sh 2. 执行相关模块单元测试: bash tests/build_ut.sh --ut=adump -c bash tests/build_ut.sh --ut=msprof -c bash tests/build_ut.sh --ut=atrace -c 3. 检查打包 staging 目录,确认兼容路径中的头文件为实体文件,并与对应源文件内容一致。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 提交 ID:978532b3f84c506f4e39d613f1ee2ad750dbc0cf - 兼容目录仍保留原有头文件访问路径。 - 打包时从唯一实体文件位置复制,避免将无效软链接带入安装包。 See merge request: cann/runtime!2735 | 2 个月前 | |
feat:清理DFX冗余头文件 Co-authored-by: yring_8<yangrui1@huawei.com> # message auto-generated for no-merge-commit merge: !2735 merge master into master feat:清理DFX冗余头文件 Created-by: yring_8 Commit-by: yring_8 Merged-by: cann-robot Description: # Pull Request ## 描述 统一 DFX 模块头文件的维护位置,删除 adump、msprof、trace 和 log 模块中的冗余副本。 主要变更: - 删除 adump、msprof、trace 目录下重复及无归属的头文件。 - 将兼容路径下的重复头文件改为软链接,保留原有引用方式。 - 将 trace 内部头文件迁移至 src/dfx/trace/inc/toolchain。 - 以 include/dfx/base/log_types.h、include/external/acl/acl_prof.h 等文件作为唯一实体。 - 调整 CMake include 路径及 adump_headers 等接口依赖。 - 调整打包配置,从实体文件位置复制头文件,确保安装包中的兼容目录仍包含普通实体文件。 - 更新 msprof、atrace、runtime 和 slog 单测的头文件依赖路径。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. 执行全量构建: ```bash sh build.sh 2. 执行相关模块单元测试: bash tests/build_ut.sh --ut=adump -c bash tests/build_ut.sh --ut=msprof -c bash tests/build_ut.sh --ut=atrace -c 3. 检查打包 staging 目录,确认兼容路径中的头文件为实体文件,并与对应源文件内容一致。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 提交 ID:978532b3f84c506f4e39d613f1ee2ad750dbc0cf - 兼容目录仍保留原有头文件访问路径。 - 打包时从唯一实体文件位置复制,避免将无效软链接带入安装包。 See merge request: cann/runtime!2735 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 8 个月前 | ||
| 7 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |