【已处理】ty_integrated_sdk_tina_r328_arm_openwrt_linux_gcc_6.4.1_3.4.4 内存释放问题

网关设备, 语音中控设备等
Post Reply
chenql
Posts: 15

1.目前是在全志的R528上进行中控的开发,基于ty_integrated_sdk_tina_r328_arm_openwrt_linux_gcc_6.4.1_3.4.4的SDK版本
2.最近开发过程中有进行崩溃测试,在测试中发现程序多次崩溃后,释放系统缓存的时候发现有部分内存无法释放出来
3.排查的时候是先考虑系统的问题,因此在3308的平台上做了同样的崩溃测试,3308的SDK是基于ty_integrated_sdk_linux_rockchip_3.4.4版本的SDK的
排查后发现3308没有类似的问题,多次崩溃测试后内存依然能正常回收
4.因此初步怀疑是平台上的一些差异内容导致的异常,平台的差异体现在屏显,wifi,音频播放这三个方面
5.后续开始进行多方面的拆分分析,显示独立运行平台的屏显代码,发现屏显在崩溃测试中没有异常,同样在wifi,音频的测试中都发现不是这些问题
6.后续跟原厂沟通了一下,原厂初步的判断是连续内存申请后没有被释放掉,原厂给到了个系统的节点来查看连续内存的申请情况,如下图的num_of_alloc_bytes参数就是连续内存的申请情况

崩溃测试的内存问题.png

7.最后是把SDK独立出来,不运行其他任何平台相关的代码,比如wifi,屏显,音频等内容,只运行SDK;内存增长的情况表现在绑定前后有差异
绑定前,程序运行会申请部分连续内存,但是把程序kill掉后,内存能正常回收;绑定后,等待设备信息等更新完成,没有太多的LOG打印后,把程序kill掉
发现申请的连续内存没有被释放掉;
8.后续又进行了不同家庭的测试,一个家庭是完全空白没有任何设备的,绑定后KILL掉,查看内存增长;另外一个家庭是有几十个设备,绑定后KILL掉查
看内存增长,发现两个家庭下,程序KILL掉的内存增长基本一致,不受到设备数量的影响

以上就是目前排查后的所有情况了

luoji
Posts: 104

Re: ty_integrated_sdk_tina_r328_arm_openwrt_linux_gcc_6.4.1_3.4.4 内存释放问题

设备RAM多大

chenql
Posts: 15

Re: ty_integrated_sdk_tina_r328_arm_openwrt_linux_gcc_6.4.1_3.4.4 内存释放问题

内存大小是128M,flash是256M

luoji
Posts: 104

Re: ty_integrated_sdk_tina_r328_arm_openwrt_linux_gcc_6.4.1_3.4.4 内存释放问题

进程被杀掉后,内存会归还给系统,这是linux的基础能力。
建议进一步分析比较下系统上关于内存的配置(和3308平台的系统比较)。

Post Reply