讨论广场 问答详情
【ServiceInit()函数执行异常】OH4.0-Release, liteos_m, mini
Kib 2024-05-31 11:47:34
58 评论 分享

图1

图2

图3

图4

图5

问题概述:

执行XTS测试案例时,test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c文件中ServiceInit()函数执行失败,经排查,发现是 VECTOR_Add()函数执行异常导致的。

详细说明:

1、如图1,ServiceInit()函数中4次循环调用RegisterService()函数进行service注册。

2、如图2,RegisterService()函数中调用VECTOR_Add()函数,将service添加到vector结构体数据中。

3、如图3,VECTOR_Add()函数的具体实现,vector.top表示vector中已经存在的service数量。

4、如图4,是ld文件中RAM的配置。

按代码逻辑,ServiceInit()中每次循环都会调用一次VECTOR_Add(),同事vector.top应该同步自增。

具体问题:

但从输出日志(如图5),VECTOR_Add()每次操作内存地址为0x20005e84的vector时,进入函数时top都为0(出函数时top=1);而操作其他内存地址的vector时(详见附件),则top可以正常自增。

该问题导致后续从vector中查询service信息时失败,从而导致xts测试套件执行失败。

备注说明:

经反复排查发现,不一定是test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c中的代码存在这个问题,修改”test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/BUILD.gn“,只运行其中一部分测试案例时,总会有一个测试案例的代码会该问题,出现该问题的vector的内存地址相比较于其他测试案例的vector的内存地址都莫名的偏大(详见附件日志)。

 

请问该问题应如何排查?

 

 

 

 

 

58 评论 分享
相关文件下载
xts_log_20240531.zip
2.37 KB
下载
写回答
全部评论(4)

有无对比官方通过测试认证的设备进行对比?或者提供xts测试报告看一下。

2024-05-31 16:34:41
2024-06-04 14:37:07
引用:“现在是正在适配XTS子系统,准备跑XTS的过程中,然后就出现这个问题,跑失败了”
没有正常设备对比,这种4.0版本小型设备的XTS问题,建议在官网上提issue,让官方社区帮忙看一下
2024-06-04 14:37:07
2024-05-31 17:07:00
我们是在自己移植OpenHarmony,没有官方通过测试认证的设备。
2024-05-31 17:07:00
2024-05-31 16:57:03
现在是正在适配XTS子系统,准备跑XTS的过程中,然后就出现这个问题,跑失败了
2024-05-31 16:57:03