
图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的内存地址都莫名的偏大(详见附件日志)。
请问该问题应如何排查?

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

