[RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
生活随笔
收集整理的這篇文章主要介紹了
[RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
現(xiàn)象:
通過(guò)adb安裝搜狐視頻之后打開(kāi)apk沒(méi)進(jìn)入界面之后系統(tǒng)就Crash,導(dǎo)致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
找到對(duì)應(yīng)函數(shù)是: 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,發(fā)現(xiàn)crash在context->fun_policy,再打印context->fun_policy地址,
結(jié)果crash的時(shí)候地址被修改,說(shuō)明有其他地方把這個(gè)地址的內(nèi)容給改寫了!
解決方法:
像這種問(wèn)題比較難處理,而且特別像這種復(fù)雜的和硬件相關(guān)的HWC模塊,需要非常熟悉才能找到問(wèn)題點(diǎn)。
幸好更新了rk的最新HWC code之后問(wèn)題得到了解決。
OS: Android 6.0
Kernel: 3.10.92
現(xiàn)象:
通過(guò)adb安裝搜狐視頻之后打開(kāi)apk沒(méi)進(jìn)入界面之后系統(tǒng)就Crash,導(dǎo)致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
調(diào)試:
通過(guò)objdump定位具體是哪個(gè)函數(shù)出現(xiàn)了問(wèn)題:
#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找到對(duì)應(yīng)函數(shù)是: 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,發(fā)現(xiàn)crash在context->fun_policy,再打印context->fun_policy地址,
結(jié)果crash的時(shí)候地址被修改,說(shuō)明有其他地方把這個(gè)地址的內(nèi)容給改寫了!
解決方法:
像這種問(wèn)題比較難處理,而且特別像這種復(fù)雜的和硬件相關(guān)的HWC模塊,需要非常熟悉才能找到問(wèn)題點(diǎn)。
幸好更新了rk的最新HWC code之后問(wèn)題得到了解決。
總結(jié)
以上是生活随笔為你收集整理的[RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java fckeditor下载_FCK
- 下一篇: opencv的第一个lena图片显示