Bootstrap

数组越界导致看门狗复位案例分析

问题现象

近期,产品新增功能测试发现运行一段时间后一直复位,查看复位记录,解析为内部看门狗复位。
在这里插入图片描述

问题分析

故障复现:
拿到故障样机后,读取电能记录,发现T10费率电能为0 ,其他电能都正常, 如下图:
在这里插入图片描述
单步跟踪,发现一段程序运行完毕,返回后第一条指令执行完毕后,程序跑飞,接着就产生了看门狗复位。如下所示。 肯定不是这个语句问题,应该是上一段功能代码有故障。
在这里插入图片描述
继续查找,发现下述语句屏蔽后,故障消失。
在这里插入图片描述
进一步测试发现,只有累计反向电能才会复现故障, 正向电能工作正常
在这里插入图片描述
正向跟反向 是同一段代码。
T5~T12 费率电能累加 也是一段代码。 仿真发现,出现异常时,该语句执行正常,如下:
在这里插入图片描述
再往下看,有反向电能调用接口,仔细查看发现数据定义不够:
在这里插入图片描述
定义数组大小只有5
在这里插入图片描述

修改数组大小到8后,故障消失。

解决措施

1、修改数组初始化定义,改为指针类型。
2、搜查同类操作,一并修改。

总结建议

数组越限可能导致内存溢出以及程序跑飞,再用到指针时,应避免用数组操作指针,改用指针变量指向数组更为规范。

;