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

来源:互联网 发布:第一版主网最新域名 编辑:程序博客网 时间:2024/06/05 09:32


 

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"inLINUX/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, pleaseremountadb rootadb remountadb shellmount -t vfat -o remount, rw /firmware Please try the new firmware.and share the kernel log too. adb rebootadb rootadb shell "echo 0x1f >/sys/kernel/debug/msm_vidc/debug_level" adb logcat -b kernel -v threadtime > kernel.loglogcat -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 rootadb shellcd /d/msm_vidcecho 0x1015 > debug_levelecho 0x3F > fw_levelexit adb logcat -cadb 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 systemdisabled 如果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=0write /sys/module/subsystem_restart/parameters/enable_ramdumps0 system\core\rootdir\init.rc设置使能ramdump的值为1# [ODM] set modem side SSRsetprop persist.sys.ssr.enable_ramdumps 1echo 1 >/sys/module/subsystem_restart/parameters/enable_ramdumpschmod 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 0
原创粉丝点击