[RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
来源:互联网 发布:highcharts java 封装 编辑:程序博客网 时间:2024/06/03 18:30
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
找到对应函数是: hwc_try_policy()@rk_hwcomposer.cpp
结果crash的时候地址被修改,说明有其他地方把这个地址的内容给改写了!
解决方法:
像这种问题比较难处理,而且特别像这种复杂的和硬件相关的HWC模块,需要非常熟悉才能找到问题点。
幸好更新了rk的最新HWC code之后问题得到了解决。
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之后问题得到了解决。
阅读全文
1 0
- [RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
- [RK3288][Android6.0] 调试笔记 --- 开机视频无法播放
- [RK3288][Android6.0] 调试笔记 --- 开机动画支持播放mp4视频功能
- [RK3288][Android6.0] 调试笔记 --- tts语音无法播放
- [RK3288][Android6.0] 调试笔记 --- 命令行播放音乐方法
- [RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题
- [RK3288][Android6.0] 调试笔记 --- 播放GIF动画卡顿问题
- [RK3288][Android6.0] 调试笔记 --- 实时录音会有呲呲噪音问题
- [RK3288][Android6.0] 调试笔记 --- I2C通信失败问题
- [RK3288][Android6.0] 调试笔记 --- Camera没有权限打开问题
- [RK3288][Android6.0] 调试笔记 --- AndroidTool低格无效问题
- [RK3288][Android6.0] 调试笔记 --- edp屏无法点亮问题
- [RK3288][Android6.0] 调试笔记 --- 关闭音频播放停止后进入Standby功能
- [RK3288][Android6.0] 调试笔记 --- 查看音乐播放对应的进程名
- [RK3288][Android6.0] 调试笔记 --- RT5640播放时的Codec寄存器列表
- [RK3288][Android6.0] 调试笔记 --- 调试串口的更换
- [RK3288][Android6.0] 调试笔记 --- 修改boot.img后进入Recovery模式问题
- [RK3288][Android6.0] 调试笔记 --- 同时支持多颗Camera打开的问题
- 玩转Redis集群(上)
- Java中构造函数执行顺序的问题
- MFC实现选择文件夹的对话框
- 执行spring boot jar包
- 对ThreadLocal的源码解读
- [RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
- 浅谈Java web 中request的setAttribute()用法
- 玩转Redis集群(下)
- leetcode-530. Minimum Absolute Difference in BST
- js中的闭包问题
- 交换机配置与使用
- 【BFS+保存路径】POJ 3984 迷宫问题
- 前言
- SSH的用户的增删改查功能