[经验分享] 【TEST测试】CFI CHECK crash的处理 原创

诚迈_雨哥 显示全部楼层 发表于 2024-6-1 15:05:08

1. 问题

a. 运行测试用例时无疾而终

例如:运行 IntentionServiceTest用例时,出现 RUN 字段后就异常退出,如下图

rununittest_block.PNG

b. 导出Crash文件

导出的目录要提前建好,假设为 D:\Test\log\1\

export_faultlog.PNG

c. 打开日志查看

显然 有一个包含 IntentionServiceTest 字段的Crash 日志文件,打开查看,发现有 __cfi_check 字段

cfi_check.PNG

2. 原因

经过搜索cfi 字段发现,待测试模块存在cfi检查,而当前模块没有,相互调用时报告异常。 本着这个问题既不是第一次出现,也不是最后一次出现的想法,在当前子系统目录搜索,在很多BUILD.gn中终于找到了 cfi 的相关设置。

3. 解决方案

增加 cfi_check,如红框所示问题解决

add_cfi.PNG

含义如下:

explain.PNG

4. 个别模块增加了cfi 检查,在运行时还会崩溃的处理

经过分析存在如下两种情况:

  • a.模块增加了cfi检查,但是个别函数不能进行检查意味着这个函数避免cfi检查,增加免检字段,如果有头文件,则函数声明的地方也要添加

    avoid_cfi_check.PNG

  • b.该模块增加了cfi 检查,但是它依赖的其他模块没有进行cfi检查 于是,将它依赖的其他模块头文件目录列入免检清单

    add_blocklist.PNG

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部