文章目录
-
- 前言
- 正向排查尝试
- 反向排查
- 问题原因分析
- 问题解决处理
- 总结
前言
在项目开发过程中,在一次软件变更时,调整了task优先级之后导致应用层软件中的float数据经常性的变为NAN,导致应用层功能失效。本文记录下这个bug的分析及解决过程。
正向排查尝试
由于问题复现的概率较高,大概运行30min就会出现,出现问题的全局变量是由局部变量赋值的,在出现问题的全局变量处加上NAN判断后,打断点测试发现是由于stack中对应局部变量变为NAN导致。且NAN的值,很多都是0xfffffff7
最开始怀疑是栈溢出,但是查看过分配的栈空间,是远远够的,可以排除掉。
怀疑是有数组溢出导致,但是排查了相关的代码,也没有发现异常。
设置硬件断点,触发NAN写入时,停在isnan函数里,停下的地方也没有什么有用的信息
正向排查只能定位到是stack的值被篡改了,无法定位到具体原因,也就没法给出解决方案
根据变更点,肯定还是