[RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
现象:
通过adb安装搜狐视频之后打开apk没进入界面之后系统就Crash,导致Android重启。
Crash Log:
--------- beginning of crash
01-21 19:31:22.786 174 174 F libc : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 174 (surfaceflinger)
01-21 19:31:22.862 1152 1303 D DataRequestActivity: net connect spend time : 1
01-21 19:31:22.888 209 209 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-21 19:31:22.888 209 209 F DEBUG : Build fingerprint: 'Android/rk3288/rk3288:6.0.1/3.0.02/kris05101452:user/platform-keys'
01-21 19:31:22.888 209 209 F DEBUG : Revision: '0'
01-21 19:31:22.888 209 209 F DEBUG : ABI: 'arm'
01-21 19:31:22.888 209 209 F DEBUG : pid: 174, tid: 174, name: surfaceflinger >>> /system/bin/surfaceflinger <<<
01-21 19:31:22.888 538 622 W NativeCrashListener: Couldn't find ProcessRecord for pid 174
01-21 19:31:22.888 209 209 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8
01-21 19:31:22.892 209 209 F DEBUG : r0 b7db6f00 r1 b7fbdec0 r2 592c0592 r3 0000000a
01-21 19:31:22.892 209 209 E DEBUG : AM write failed: Broken pipe
01-21 19:31:22.892 209 209 F DEBUG : r4 b2b49348 r5 00000000 r6 00000000 r7 b7db7b54
01-21 19:31:22.892 209 209 F DEBUG : r8 b7db6f00 r9 b7fbdec0 sl b2b4a580 fp b2b49348
01-21 19:31:22.892 209 209 F DEBUG : ip beffc618 sp beffcaf0 lr b2b425eb pc 00000008 cpsr 600f0010
01-21 19:31:22.896 209 209 F DEBUG :
01-21 19:31:22.896 209 209 F DEBUG : backtrace:
01-21 19:31:22.896 209 209 F DEBUG : #00 pc 00000008 <unknown>
01-21 19:31:22.896 209 209 F DEBUG : #01 pc 0000c5e9 /system/lib/hw/hwcomposer.rk30board.so (_Z14hwc_try_policyP11_hwcContextP22hwc_display_contents_1i+56)
01-21 19:31:22.896 209 209 F DEBUG : #02 pc 0000f68f /system/lib/hw/hwcomposer.rk30board.so
01-21 19:31:22.896 209 209 F DEBUG : #03 pc 0000fba1 /system/lib/hw/hwcomposer.rk30board.so
01-21 19:31:22.896 209 209 F DEBUG : #04 pc 00025c57 /system/lib/libsurfaceflinger.so
01-21 19:31:22.896 209 209 F DEBUG : #05 pc 0001be5d /system/lib/libsurfaceflinger.so
01-21 19:31:22.896 209 209 F DEBUG : #06 pc 0001b3cb /system/lib/libsurfaceflinger.so
01-21 19:31:22.896 209 209 F DEBUG : #07 pc 0001b165 /system/lib/libsurfaceflinger.so
01-21 19:31:22.896 209 209 F DEBUG : #08 pc 000135a1 /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+456)
01-21 19:31:22.897 209 209 F DEBUG : #09 pc 000136bb /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+130)
01-21 19:31:22.897 209 209 F DEBUG : #10 pc 00018601 /system/lib/libsurfaceflinger.so
01-21 19:31:22.897 209 209 F DEBUG : #11 pc 0001ad8d /system/lib/libsurfaceflinger.so (_ZN7android14SurfaceFlinger3runEv+8)
01-21 19:31:22.897 209 209 F DEBUG : #12 pc 00000e45 /system/bin/surfaceflinger
01-21 19:31:22.897 209 209 F DEBUG : #13 pc 00016631 /system/lib/libc.so (__libc_init+44)
01-21 19:31:22.897 209 209 F DEBUG : #14 pc 00000cac /system/bin/surfaceflinger
调试:
通过objdump定位具体是哪个函数出现了问题:
#prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objdump -d -S out/target/product/rk3288/symbols/system/lib/hw/hwcomposer.rk30board.so > ~/objdump.txt
找到对应函数是: hwc_try_policy()@rk_hwcomposer.cpp
int hwc_try_policy(hwcContext * context,hwc_display_contents_1_t * list,int dpyID)
{int ret;for(int i = 0;i < HWC_POLICY_NUM;i++){
......ret = context->fun_policy[i]((void*)context,list);if(!ret){break; // find the Policy}}return ret;
}
添加Log,发现crash在context->fun_policy,再打印context->fun_policy地址,
结果crash的时候地址被修改,说明有其他地方把这个地址的内容给改写了!
解决方法:
像这种问题比较难处理,而且特别像这种复杂的和硬件相关的HWC模块,需要非常熟悉才能找到问题点。
幸好更新了rk的最新HWC code之后问题得到了解决。
[RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题相关推荐
- [RK3288][Android6.0] 调试笔记 --- touch无法获取坐标点
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 有网友遇到调试touch的时候能触发中断,但无法获取坐标点 具体可参考文章 [RK3288][An ...
- [RK3288][Android6.0] 调试笔记 --- AndroidTool低格无效问题
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 现象: 之前文章 [RK3288][Android6.0] 调试笔记 - AndroidTool两 ...
- [RK3288][Android6.0] 调试笔记 --- 电池电量一直显示100%
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 之前文章[RK3288][Android6.0] 调试笔记 - 伪电池驱动添加 阐述了如何添加一个 ...
- [RK3288][Android6.0] 调试笔记 --- WiFi芯片AP6356S添加
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 背景: RK3288 Android6.0平台对AP6356S的支持不是很完善,直接修改wifi ch ...
- gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...
- [RK3288][Android6.0] 调试笔记 --- 双屏显示内核Patch
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 根据5.1的双屏显示patch,在android6.0上修改了下,因为没硬件环境,所以未经验证,仅供参 ...
- [RK3288][Android6.0] 调试笔记 --- RT5640录音时的Codec寄存器列表
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 Codec: RT5640 此文给调试RT5640播放无声音的朋友做参考. RT5640用的是RT ...
- [RK3288][Android6.0] 调试笔记 --- 调试串口的更换
Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 假设项目有需求要将调试串口uart2 改成 uart1, 改动如下 (还未验证,先分享给大家,有问 ...
- [RK3288][Android6.0] 调试笔记 --- 软硬键盘同时使用【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/78748313 Platform: RK3288 OS: Android 6.0 Kern ...
- android 系统gpu 调试_[RK3288][Android6.0] 调试笔记 --- 读取当前DDR和GPU频率方法
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 ddr和gpu的clock都受dvfs模块管控, 所以只要执行: root@rk3288:/ # ...
最新文章
- 小程序加载大图片 使用widthFix时,图片先拉伸然后才显示完全
- diy高性能存储服务器,diy存储服务器
- 手动初始化设置3PAR存储系统
- ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别
- spring事务(Transaction)的七种事务传播行为及五种隔离级别
- origin如何绘制双y轴曲线_Origin用矩阵绘制多层曲面映射图
- python .py文件变为.so文件进行加密
- node.js详解Http服务器
- 假设以带头结点的循环链表表示队列_JavaScript数据结构之链表--设计
- java设计模式之美_《设计模式之美》-笔记
- 方法参数关键字:params、ref及out
- 简体,繁体中文互转类
- xlsxwriter进度条php,PHP_XLSXWriter
- CNC加工中心的刀具补偿详解
- 儿童手工制作日历_变废为宝的手工日历小台历制作教程
- 测试人员应看重「业务测试能力」
- 关于uniapp获取ios客户端平台安全距离(底部导航条)的方法
- anchor-free方法总结
- 安全面试之安全基础(二)
- 复函数积分的共轭等于其共轭的积分