2019-07-21 03:44发布
正点原子 发表于 2017-5-3 21:00 真是犀利
posystorage 发表于 2017-5-9 20:09 感谢原子哥支持。 我找到最后视频退出时会概率性进硬件中断的原因了。 花了两天终于检测出来了,是栈溢 ...
最多设置5个标签!
感谢原子哥支持。
我找到最后视频退出时会概率性进硬件中断的原因了。
花了两天终于检测出来了,是栈溢出,影响了其他运行参数。栈被编译在内存的最末尾,然后向下一走溢出就到变量区了。然后靠近栈很近的mem1mapbase是malloc里面存放申请内存的地址的,这个参数被溢出的栈修改了,导致在释放内存的时候,地址不对,硬件中断错误。
同样的ftinfo,和avix早就被覆盖了,只是没造成特别严重的问题
mem1base 0x20001480 Data 55008 malloc.o(.bss)
mem1mapbase 0x2000eb60 Data 3438 malloc.o(.bss)
ftinfo 0x2000f8ce Data 33 fontupd.o(.bss)
avix 0x2000f8ef Data 40 avi.o(.bss)
__initial_sp 0x2000ffd8 Data 0 startup_stm32f10x_hd.o(STACK)
0x2000f918 0x000006c0 Zero RW STACK startup_stm32f10x_hd.o
后来吧栈改大了,问题解决。原来是0x400,现在改到0x6c0,毕竟内存还是太捉襟见肘了。
检查的方法用的这位大量的小工具,http://www.openedv.com/posts/list/19693.htm,很是感谢
牛逼
一周热门 更多>