Armv6 + ffmpeg + android = sigill(堆)

时间:2013-08-11 15:42:59

标签: android android-ndk ffmpeg armv6

如果我为armv7编译所有内容,它就能完美运行。 如果我为armv6编译所有东西,它在调用第一个ffmpeg函数时崩溃,我不理解崩溃输出。

可能是什么问题?

我使用ndk-8e并使用minSdk = 8 targetSdk = 17 我在Android 2.2模拟器上试过这个(同样高堆大小= 128mb,看看它是否有效,但它不是..)

    08-11 18:36:28.904: I/DEBUG(30): signal 4 (SIGILL), fault addr 81247524
    08-11 18:36:28.904: I/DEBUG(30):  r0 81b346a0  r1 81b347bc  r2 81b34702  r3 00000002
    08-11 18:36:28.904: I/DEBUG(30):  r4 00000001  r5 00000002  r6 00005601  r7 0000011a
    08-11 18:36:28.904: I/DEBUG(30):  r8 814cf2d0  r9 8090eca1  10 00000001  fp 0022c928
    08-11 18:36:28.904: I/DEBUG(30):  ip 00000006  sp 5ca0173c  lr 812d6404  pc 81247524  cpsr 80000010
    08-11 18:36:29.014: D/dalvikvm(58): GC_FOR_MALLOC freed 10199 objects / 574352 bytes in 153ms
    08-11 18:36:29.183: I/DEBUG(30):          #00  pc 00247524  /data/data/com.myapp/lib/libffmpeg.so
    08-11 18:36:29.183: I/DEBUG(30):          #01  lr 812d6404  /data/data/com.myApp/lib/libffmpeg.so
    08-11 18:36:29.183: I/DEBUG(30): code around pc:
    08-11 18:36:29.183: I/DEBUG(30): 81247504 e15c0007 e14260b2 e5d35003 e5d3a002 
    08-11 18:36:29.183: I/DEBUG(30): 81247514 e5d34004 e1c260b0 e1a05085 e1a0308a 
    08-11 18:36:29.183: I/DEBUG(30): 81247524 e6ef5075 e064a005 e6ef3073 e28aa001 
    08-11 18:36:29.193: I/DEBUG(30): 81247534 e2836001 e0854004 e5c14000 e5c1a001 
    08-11 18:36:29.193: I/DEBUG(30): 81247544 e5c06001 e5c03000 e2822004 e2811002 
    08-11 18:36:29.193: I/DEBUG(30): code around lr:
    08-11 18:36:29.193: I/DEBUG(30): 812d63e4 eb057846 e3500000 1afffff7 e5943048 
    08-11 18:36:29.193: I/DEBUG(30): 812d63f4 e3530000 08bd8070 e1a00004 e12fff33 
    08-11 18:36:29.193: I/DEBUG(30): 812d6404 e8bd8070 007bbc14 007bbbe8 e92d4010 
    08-11 18:36:29.193: I/DEBUG(30): 812d6414 e5d1c001 e5d04001 e5d02000 e5d13000 
    08-11 18:36:29.193: I/DEBUG(30): 812d6424 e06c0004 e0633002 e0830400 e8bd8010 
    08-11 18:36:29.193: I/DEBUG(30): stack:
    08-11 18:36:29.193: I/DEBUG(30):     5ca016fc  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca01700  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca01704  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca01708  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca0170c  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca01710  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca01714  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca01718  00000000  
    08-11 18:36:29.193: I/DEBUG(30):     5ca0171c  00000000  
    08-11 18:36:29.203: I/DEBUG(30):     5ca01720  00000000  
    08-11 18:36:29.203: I/DEBUG(30):     5ca01724  00000000  
    08-11 18:36:29.203: I/DEBUG(30):     5ca01728  00000000  
    08-11 18:36:29.203: I/DEBUG(30):     5ca0172c  00000000  
    08-11 18:36:29.203: I/DEBUG(30):     5ca01730  df002777  
    08-11 18:36:29.203: I/DEBUG(30):     5ca01734  e3a070ad  
    08-11 18:36:29.203: I/DEBUG(30):     5ca01738  815d9bd0  /data/data/com.myApp/lib/libffmpeg.so
    08-11 18:36:29.203: I/DEBUG(30): #00 5ca0173c  815d9c60  /data/data/com.myApp/lib/libffmpeg.so
    08-11 18:36:29.203: I/DEBUG(30):     5ca01740  815d9bd0  /data/data/com.myApp/lib/libffmpeg.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca01744  8094b9c4  /data/data/com.myApp/lib/mycustomlib.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca01748  afd489b0  
    08-11 18:36:29.213: I/DEBUG(30):     5ca0174c  00100000  [heap]
    08-11 18:36:29.213: I/DEBUG(30):     5ca01750  5c902000  
    08-11 18:36:29.213: I/DEBUG(30):     5ca01754  812d6404  /data/data/com.myApp/lib/libffmpeg.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca01758  815d0c00  /data/data/com.myApp/lib/libffmpeg.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca0175c  80952dec  /data/data/com.myApp/lib/mycustomlib.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca01760  8094b9c4  /data/data/com.myApp/lib/mycustomlib.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca01764  8107b964  /data/data/com.myApp/lib/libffmpeg.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca01768  0022c928  [heap]
    08-11 18:36:29.213: I/DEBUG(30):     5ca0176c  8090da63  /data/data/com.myApp/lib/mycustomlib.so
    08-11 18:36:29.213: I/DEBUG(30):     5ca01770  00000000  
    08-11 18:36:29.213: I/DEBUG(30):     5ca01774  00000000  
    08-11 18:36:29.213: I/DEBUG(30):     5ca01778  00000000  
    08-11 18:36:29.224: I/DEBUG(30):     5ca0177c  00000000  
    08-11 18:36:29.224: I/DEBUG(30):     5ca01780  80953024  /data/data/com.myApp/lib/mycustomlib.so

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。此问题仅发生在模拟器上。这可能是与模拟器本身相关的问题。

对于有类似问题的人:在真实设备上试试你的包裹。我在一个真正的armv6设备上尝试了相同的包,但它确实有效。