OpenHarmony开发者论坛
标题:
【TEST测试】CFI CHECK crash的处理
[打印本页]
作者:
诚迈_雨哥
时间:
2024-6-1 15:05
标题:
【TEST测试】CFI CHECK crash的处理
[md]# 1. 问题
## a. 运行测试用例时无疾而终
例如:运行 IntentionServiceTest用例时,出现 RUN 字段后就异常退出,如下图
![rununittest_block.PNG](
https://forums-obs.openharmony.c ... uugughmemueukvh.png
"rununittest_block.PNG")
![](./figures/rununittest_block.png)
## b. 导出Crash文件
导出的目录要提前建好,假设为 D:\Test\log\1\
![export_faultlog.PNG](
https://forums-obs.openharmony.c ... qsubuwuvx6pqubx.png
"export_faultlog.PNG")
![](./figures/export_faultlog.png)
## c. 打开日志查看
显然 有一个包含 IntentionServiceTest 字段的Crash 日志文件,打开查看,发现有 __cfi_check 字段
![cfi_check.PNG](
https://forums-obs.openharmony.c ... i8882zz84yy5t74.png
"cfi_check.PNG")
![](./figures/cfi_check.png)
# 2. 原因
经过搜索cfi 字段发现,待测试模块存在cfi检查,而当前模块没有,相互调用时报告异常。
本着这个问题既不是第一次出现,也不是最后一次出现的想法,在当前子系统目录搜索,在很多BUILD.gn中终于找到了 cfi 的相关设置。
# 3. 解决方案
## 增加 cfi_check,如红框所示问题解决
![add_cfi.PNG](
https://forums-obs.openharmony.c ... 3eabbbfbv2yzv5f.png
"add_cfi.PNG")
![](./figures/add_cfi.png)
**含义如下:**
![explain.PNG](
https://forums-obs.openharmony.c ... b2k3kbuewu2nbc1.png
"explain.PNG")
![](./figures/explain.png)
# 4. 个别模块增加了cfi 检查,在运行时还会崩溃的处理
经过分析存在如下两种情况:
* a.模块增加了cfi检查,但是个别函数不能进行检查意味着这个函数避免cfi检查,增加免检字段,如果有头文件,则函数声明的地方也要添加
![avoid_cfi_check.PNG](
https://forums-obs.openharmony.c ... 7dd3d0lg3wzb7pb.png
"avoid_cfi_check.PNG")
* b.该模块增加了cfi 检查,但是它依赖的其他模块没有进行cfi检查
于是,将它依赖的其他模块头文件目录列入免检清单
![add_blocklist.PNG](
https://forums-obs.openharmony.c ... uupl9x29a6muxnm.png
"add_blocklist.PNG")
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5