msm8937+android7.1系统播放某个MP4文件在data分区下创建ramdump并生成很多elf文件问题


 

1.    问题描述

设备用系统自带播放器播放某个MP4文件(15s左右的视频文件),有时候可以播放通过,有时候播放过程提示“无法播放此视频”,播放2~3天左右,系统提示存储空间不足。

 

经确认在/data分区下发现有个新创建的ramdump文件夹,里面有很多ramdump_venu_xx.elf的文件(比如ramdump_venus_2017-09-18_08-40-06.elf),其中提示存储空间不足的,整个ramdump文件夹大小为9.57GB。

 

2.    问题分析

-------------------------20170922----------------------------------------

高通根据我们提供的内核信息,主要分析结果

from the kernel log, I didn't find mucherror log.
do you find any other elf besides venuself?
 
venus is used for video decoder and videoencoder.
from the log, h264 decoder is running.
 
if you didn't do anything, that might becaused by mediascan, mediascan try to generate thumbnail, then invoke decoder.
from the kernel log, when handle 176x144media file, venus will report a error.

-------------------20170929高通给新的venus固件验证-----------------

Please try the test venus firmware.

You can find origianl venus firmware under/system/etc/firmware/ or /firmware/image/

 

这些文件是放在NON-HLOS.bin中的。

 

You can find origianl venus firmware name.

If you are using venus-v1.xxx, pleaserename the test venus firmware to venus-v1.xxx if the name is not matched.

If you are using venus.xxx, please renamethe test venus firmware to venus.xxx if the name is not matched.

这是方案商提供的相关文件:


If there are both venus.xxx andvenus-v1.xxx,
You can get the real venus name from"firmware-name"
in
LINUX/android/kernel/arch/arm/boot/dts/qcom/
 
sign means images are signed with qualcommsignature.
unsign means images are not signed.
 
If your company has own signature, you needto use unsigned images and sign them with your own signature.
If not, you can use sign images.
 
Please push the venus images to/system/etc/firmware/ or /firmware/image/
Before push the venus images, pleaseremount
adb root
adb remount
adb shell
mount -t vfat -o remount, rw /firmware
 
Please try the new firmware.
and share the kernel log too.
 
adb reboot
adb root
adb shell "echo 0x1f >/sys/kernel/debug/msm_vidc/debug_level"
 
adb logcat -b kernel -v threadtime > kernel.log
logcat -b kernel -v threadtime > /data/kernel.log&

但根据这些操作无效,方案商重新提供合并venus*文件的NON-HLOS.bin,测试发现没有生成elf文件的问题,但播放视频的时候发现有丢帧问题

 

------------------------------2017.10.12----------------------------

高通重新给新的NON-HLOS.bin才解决了这两个难问题,但具体怎么解决的,没有给我们说明。

 

抓kernel的一些信息备忘:

if yes, please share the kernel log foranalysis.
 
adb root
adb shell
cd /d/msm_vidc
echo 0x1015 > debug_level
echo 0x3F > fw_level
exit
 
adb logcat -c
adb logcat -b kernel -v threadtime >logcat.log
 
wait for issue reproduced, share the log.

3.    问题的解决

3.1  方法一:当出现这样异常时不抓dump和转储到data目录下

device\qcom\common\rootdir\etc\init.qcom.rc
定义ramdump服务的代码
service ss_ramdump /system/bin/subsystem_ramdump
   class main
   user system
   group system
disabled
 
如果enable_ramdumps值被使能那么启动ss_ramdump服务
onproperty:persist.sys.ssr.enable_ramdumps=1
   write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
   mkdir /data/ramdump 770 system system
   start ss_ramdump
如果ss_ramdump被启动,则会调用到vendor/qcom/proprietary/ss-restart/subsystem_ramdump/subsystem_ramdump.c中的main函数。
 
onproperty:persist.sys.ssr.enable_ramdumps=0
write /sys/module/subsystem_restart/parameters/enable_ramdumps0
 
system\core\rootdir\init.rc
设置使能ramdump的值为1
# [ODM] set modem side SSR
setprop persist.sys.ssr.enable_ramdumps 1
echo 1 >/sys/module/subsystem_restart/parameters/enable_ramdumps
chmod 664 /dev/ramdump_*
   setprop persist.sys.ssr.restart_level modem
   echo related > /sys/bus/msm_subsys/devices/subsys2/restart_level
   
subsystem_ramdump :发生SSR的时候会将内存中的东西存储到其他的位置。

注释掉红色部分内容可以解决此问题,但这不是根本的解决方法,只是出现问题的时候不抓dump信息,不转储到/data分区下而已。

 

3.2  彻底解决,高通通过更新NON-HLOS.bin来解决,但我们不知道具体的解决方法。

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值