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