1

非常に奇妙な問題があります。すべてのデバイスで問題なく動作しますが、Samsung Galaxy S2 ではクラッシュすることがあります。

アプリはffmpegを使用しており、クラッシュはどこかにあります。ただし、コード自体に問題は見られません (問題がある場合は、他のデバイスでもクラッシュします)。

すべての asm-optimizations をオフにしてコンパイルしようとしましたが、それでも役に立ちません。

また、クラッシュは 2.3.6 でのみ発生し、ICS ではクラッシュしないようです。

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I DEBUG   : Build fingerprint: '2.3.6/GINGERBREAD/LA2:user/release-keys'
I DEBUG   : pid: 28725, tid: 30055  >>> xxxxxxxxxxxxxx <<<
I DEBUG   : signal 7 (SIGBUS), code 128 (?), fault addr 00000000
I DEBUG   :  r0 8e25e9fe  r1 000000b1  r2 00877731  r3 00000000
I DEBUG   :  r4 5257fe78  r5 005a7300  r6 5257fec4  r7 00630340
I DEBUG   :  r8 00000000  r9 00000724  10 81de8c6c  fp 006ccfe8
I DEBUG   :  ip 81de44b4  sp 5257fe08  lr 819c3748  pc 818386a0  cpsr 28000010
I DEBUG   :  d0  fd794ba0fd619c90  d1  fd96d984fd94d4d0
I DEBUG   :  d2  fd9232c4fd8c7b34  d3  fdaf8694fda5c318
I DEBUG   :  d4  3f33c07d3f333e16  d5  3f34c43d3f34428b
I DEBUG   :  d6  40667a147ae147af  d7  bff0000000000000
I DEBUG   :  d8  3ee4f8b588e368f1  d9  4680000044a04000
I DEBUG   :  d10 43a18000446b8000  d11 0000000043a18000
I DEBUG   :  d12 0000000000000000  d13 0000000000000000
I DEBUG   :  d14 0000000000000000  d15 0000000000000000
I DEBUG   :  d16 0000000001e9a790  d17 fe4dfbc0fe7eccdc
I DEBUG   :  d18 fdd679ccfe11f78a  d19 fd6edbecfd9d4964
I DEBUG   :  d20 fe9afe9afea3fea3  d21 fe4dfe4dfe7efe7e
I DEBUG   :  d22 fdd6fdd6fe11fe11  d23 fd6efd6efd9dfd9d
I DEBUG   :  d24 fd79fd79fd61fd61  d25 fd96fd96fd94fd94
I DEBUG   :  d26 fd92fd92fd8cfd8c  d27 fdaffdaffda5fda5
I DEBUG   :  d28 3f3504f3bf3504f3  d29 bf3504f33f3504f3
I DEBUG   :  d30 4433681844aeb242  d31 3f3504f33f3504f3
I DEBUG   :  scr 2800009a
I DEBUG   : 
I DEBUG   :          #00  pc 000386a0  /data/data/xxxxxxx/lib/libffmpeg.so (av_packet_split_side_data)
I DEBUG   :          #01  lr 819c3748  /data/data/xxxxxxx/lib/libffmpeg.so
I DEBUG   : 
I DEBUG   : libc base address: afd00000
I DEBUG   : 
I DEBUG   : code around pc:
I DEBUG   : 81838680 0a000012 e5941014 e351000c da00000f 
I DEBUG   : 81838690 e2411008 e30e09fe e0822001 e3480e25 
I DEBUG   : 818386a0 e5928000 e5929004 e1a01008 e1a02009 
I DEBUG   : 818386b0 e6bf2f32 e1838002 e1a06003 e1580000 
I DEBUG   : 818386c0 e6bf1f31 e1a07001 e1a09001 0a000002 
I DEBUG   : 
I DEBUG   : code around lr:
I DEBUG   : 819c3728 e5933020 e3130020 1a000002 e5940014 
I DEBUG   : 819c3738 e3500000 0a00001c e1a00004 ebf9d3c4 
I DEBUG   : 819c3748 e595c078 e3a03000 e58d3004 e59c3020 
I DEBUG   : 819c3758 e3130901 1a000016 e58543a8 e1a00005 
I DEBUG   : 819c3768 e1a01007 e1a02006 e1a03004 e1a0e00f 
I DEBUG   : 
I DEBUG   : stack:
I DEBUG   :     5257fdc8  00000000  
I DEBUG   :     5257fdcc  00631ed8  
I DEBUG   :     5257fdd0  00001004  
I DEBUG   :     5257fdd4  00001000  
I DEBUG   :     5257fdd8  00000007  
I DEBUG   :     5257fddc  0080a788  
I DEBUG   :     5257fde0  000017bd  
I DEBUG   :     5257fde4  81f08477  /system/lib/libOpenSLES.so
I DEBUG   :     5257fde8  00632024  
I DEBUG   :     5257fdec  00000000  
I DEBUG   :     5257fdf0  05007ffc  
I DEBUG   :     5257fdf4  00000001  
I DEBUG   :     5257fdf8  00000018  
I DEBUG   :     5257fdfc  afd464ec  
I DEBUG   :     5257fe00  0026e7f1  
I DEBUG   :     5257fe04  00000000  
I DEBUG   : #00 5257fe08  0026f4f6  
I DEBUG   :     5257fe0c  afd13b69  /system/lib/libc.so
I DEBUG   :     5257fe10  5257fe78  
I DEBUG   :     5257fe14  005a7300  
I DEBUG   :     5257fe18  5257fec4  
I DEBUG   :     5257fe1c  00630340  
I DEBUG   :     5257fe20  00000000  
I DEBUG   :     5257fe24  00000724  
I DEBUG   :     5257fe28  81de8c6c  
I DEBUG   :     5257fe2c  819c3748  /data/data/xxxxxxxx/lib/libffmpeg.so
I DEBUG   :     5257fe30  0026f4f6  
I DEBUG   :     5257fe34  5257fe78  
I DEBUG   :     5257fe38  81de8c70  
I DEBUG   :     5257fe3c  5257fe78  
I DEBUG   :     5257fe40  81de8c70  
I DEBUG   :     5257fe44  81de4420  
I DEBUG   :     5257fe48  81de73c4  
I DEBUG   :     5257fe4c  00000000  
I DEBUG   : dumpstate /data/log/dumpstate_app_native.txt
I DEBUG   : debuggerd committing suicide to free the zombie!
I DEBUG   : debuggerd: Jan  5 2012 22:42:33

デバイスまたはその特定の Android バージョンで奇妙なことを見た人はいますか? または、どこを調べて修正するかについての提案はありますか?

4

2 に答える 2

1

私は非常に似た問題を抱えていました-数百のフレームをデコードした後、ffmpeg はシグナル 7 (SIGBUS) によってアプリのクラッシュを引き起こしました。それはあまりデバイス固有ではありませんでした - 一部のデバイスではアプリがより頻繁にクラッシュし、他のデバイスではそれほど頻繁にクラッシュしませんでした。

ビデオのエンコード/デコードのどの時点でも発生する可能性があり、障害を引き起こす条件を見つけることができなかったため、私にとって非常に理解できない問題でした。-malign-doubleしかし、この便利な記事に従って、フラグを 付けて ffmpeg を再コンパイルしました: http://software.intel.com/en-us/blogs/2011/08/18/understanding-x86-vs-arm-memory-alignment-on-android/ . そしてそれは役に立ちました!したがって、私の完全な「構成」行は次のとおりです(もちろん、これらのフラグのすべてが役立つわけではありません):

./configure --target-os=linux --cross-prefix=arm-linux-androideabi- --disable-asm --arch=arm --cpu=cortex-a9 --sysroot=${SYSROOT} --enable -neon --disable-avdevice --enable-decoder=mjpeg --enable-demuxer=mjpeg --enable-parser=mjpeg --enable-demuxer=image2 --enable-muxer=mp4 --prefix=build/armeabi- v7a --extra-cflags='-DANDROID -I${NDK_ROOT}/sources/cxx-stl/system/include -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp' --extra-ldflags=' -Wl,--fix-cortex-a8 -malign-double -L../android-libs -Wl,-rpath-link,../android-libs' --extra-cxxflags='-Wno-multichar -malign -double -fno-exceptions -fno-rtti'

それがあなたを助けることを願っています。

于 2012-06-28T12:33:40.887 に答える
0

これは実際には NULLPointerException であり、ライブラリ ffmpeg で発生します。この行 (pc 000386a0 /data/data/xxxxxxx/lib/libffmpeg.so) は、アドレス (000386a0) を使用して問題の正確な行を見つけると、より多くの情報を提供します。

このコマンドライン ツールを使用して、問題を引き起こしている機能を見つけることができます。

cd D:\ndk\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin


arm-linux-androideabi-addr2line -C -f -e D:\work\ProjectDIR\libs\armeabi\libffmpeg.so
于 2012-05-25T06:14:23.143 に答える