Pull Request已成功合入, 合并人@openharmony_ci
(感谢 liwenzhen3 的贡献)start build


感谢提交 Pull Requests!
Thanks for submitting a pull request.


本地或库上代码有更新,全量重新构建,重置所有关联PR的验证状态
门禁构建开始,包含静态检查、代码编译【mac_arm_arkui_ios编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/6a4f02ff64650f998bba8d1a/runlist


代码门禁通过
您可以通过如下链接查看门禁报告:http://dcp.openharmony.cn/workbench/cicd/detail/6a4f02ff64650f998bba8d1a/runlist
静态检查:
| # | check type | result | report |
|---|---|---|---|
| 1 | codeCheck | pass | >>> |
编译测试:
| # | Device | build result | package |
|---|---|---|---|
| 1 | mac_arm_arkui_ios | success | >>> |


fp 链解引用未做可读性校验,递归崩溃会丢失已生成的转储
问题:DumpBacktrace 在 FP 链遍历循环中直接对 fp 解引用,未对待读地址做任何可读性校验。证据代码行:uintptr_t lr = *reinterpret_cast<uintptr_t*>(fp + 8); 与 uintptr_t next = *reinterpret_cast<uintptr_t*>(fp);(osal/backtrace_handler.cpp:257-258)。影响:当 fp 链被破坏或指向未映射内存(栈溢出、堆损坏、JIT/JS 帧缺少帧指针等场景)时,该解引用会在信号处理函数内部再次触发 SIGSEGV;由于 CrashHandler 入口已用 g_inHandler.compare_exchange_strong 设置重入保护,递归进入的处理函数会直接走 ForwardToPrevious 返回,局部变量 DumpBuffer dump 中已收集的部分转储永远不会经 FlushDump 输出,已生成的回栈信息全部丢失。建议:在每次解引用前先 FlushDump 将已缓冲内容落盘(或改为逐帧 write),确保后续解引用崩溃时已打印帧仍保留;并增加对齐校验(arm64 上 fp 应 16 字节对齐)以提前过滤明显非法的 fp 值。
Severity: warning


sigaltstack 仅在 init 线程生效,其余线程栈溢出时无法安全转储
Darwin 上 sigaltstack 是 per-thread 的,InstallAltStack 只为调用 InitBacktraceHandler 的那一个线程注册了备用栈。配合 SA_SIGINFO|SA_ONSTACK,只有该线程的栈溢出类 SIGSEGV 能在备用栈上运行 CrashHandler;其它线程发生栈溢出时,处理函数仍在本线程已近耗尽的栈上运行,进入函数即因分配 DumpBuffer 等局部变量再次触发 SIGSEGV,而该信号在处理期间被自动屏蔽,内核直接执行默认动作终止进程,不产生任何转储。此外 sigaltstack 的返回值未检查,注册失败时备用栈同样不生效。影响:多线程 iOS 应用中绝大多数线程的栈溢出崩溃将完全无输出。建议:在框架派生线程的创建处统一调用 sigaltstack 为每个线程注册备用栈,并检查返回值;若确实不做,应在注释中明确仅 init 线程的栈溢出可被捕获。
严重程度:一般


初始化后动态加载的镜像不会进入缓存,FindImage 无法归属这些帧
g_images 仅在 LoadImages 中快照一次 dyld 镜像表,此后通过 lazy load / dlopen 加载的系统库与动态库不会写入缓存。处理函数中 FindImage 对这些 PC 返回 nullptr,对应帧只输出裸 pc 而无法给出
严重程度:一般


si_code 强转 uint32_t 使负值(如 abort() 的 SI_USER)显示为超大数
info->si_code 类型为 int,而 AppendDec 接收 uint32_t。对经 raise/pthread_kill 投递的信号(典型如 abort() 触发的 SIGABRT,si_code 为 SI_USER 等负值,例如 -2),static_cast<uint32_t> 会输出成 4294967294 这类无意义大数,干扰排查。建议新增有符号十进制输出辅助函数(或对 si_code 按有符号格式化),使 si_code 显示为正常的负值。
严重程度:提示


changed this line on df2761cc view diff detail
LOG_TAG 定义后全程未被引用
匿名命名空间中的 constexpr const char* LOG_TAG 在整个文件中没有被使用(转储头部使用的是字面量 "ArkUI-x native crash",并未引用该常量)。这属于死代码,且在开启 -Wunused-const-variable 的严格构建配置下会触发告警。建议删除该常量,或在所有输出处统一引用 LOG_TAG 以保持一致。
严重程度:提示


changed this line on df2761cc view diff detail
代码有更新,重置PR验证状态


感谢提交 Pull Requests !此PR未通过DCO校验。
校验失败可能原因:
1. 未签署“DCO协议”(开发者原创声明协议),在线签署、查看签署状态。
2. Commits 中未包含 Signed-off-by信息,参考FAQ处理。
修复上述问题后,在PR的评论框输入“check dco” ,单击”评论”,系统将再次进行DCO校验。
当前检测到如下Commits的Signed-off-by邮箱未签署DCO协议:
Thanks for submitting a pull request. This pull request has not passed the DCO check.
Possible causes:
1. You have not signed the Developer Certificate of Origin (DCO). Sign the DCO and check DCO status.
2. The commits do not contain the Signed-off-by information. To resolve this issue, see FAQs.
After resolving the preceding issues, enter check dco in the comment box of this pull request and click Comment. The system will check DCO status again.
The Signed-off-by emails in the following commits have not signed the DCO:


check dco


感谢提交 Pull Requests!
Thanks for submitting a pull request.


感谢提交 Pull Requests!
Thanks for submitting a pull request.


感谢提交 Pull Requests!
Thanks for submitting a pull request.


start build


本地或库上代码有更新,全量重新构建,重置所有关联PR的验证状态
门禁构建开始,包含静态检查、代码编译【mac_arm_arkui_ios编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/6a55dc0964650f998bd22ce3/runlist


代码门禁通过
您可以通过如下链接查看门禁报告:http://dcp.openharmony.cn/workbench/cicd/detail/6a55dc0964650f998bd22ce3/runlist
静态检查:
| # | check type | result | report |
|---|---|---|---|
| 1 | codeCheck | pass | >>> |
编译测试:
| # | Device | build result | package |
|---|---|---|---|
| 1 | mac_arm_arkui_ios | success | >>> |


Thanks for your contribution to ArkUI-X!
This repository is a read-only mirror that isn't used for accepting issues or pull requests.
To join and contribute to ArkUI-X, please visit our official open source website at https://gitee.com/ArkUI-X.
Learn how to contribute >>