Segment fault

在移植Android过程中会遇到很多Crash的情况,尤其是启动Android过程中。

一般这些问题都可以通过看代码能解决,当然也有一些比较“妖娆”的问题,

非常难找到头绪,在logcat日志也只会打印一些崩溃的堆栈,这些信息很难

帮助我们定位问题。

     首先先看一下我遇到的一个logcat关于Crash的打印信息:

:

F/libc   (  142): Fatal signal 11 (SIGSEGV)at 0xb256f000 (code=2), thread 1781 (OMXCallbackDisp)

I/DEBUG  (  137): *** *** *** *** *** ****** *** *** *** *** *** *** *** *** ***

I/DEBUG  (  137): Build fingerprint:'generic/ardbeg/ardbeg:4.3/JSS15J/eng.yanyang.20131223.092431:eng/test-keys'

I/DEBUG  (  137): Revision: '0'

I/DEBUG  (  137): pid: 142, tid: 1781,name: OMXCallbackDisp  >>>/system/bin/mediaserver <<<

I/DEBUG  (  137): signal 11 (SIGSEGV), code2 (SEGV_ACCERR), fault addr b256f000

W/NativeCrashListener(  597): Couldn't find ProcessRecord for pid 142

I/DEBUG  (  137):     r0 b256f000  r1 b2378000 r2 ffe093e7  r3 00000000

I/DEBUG  (  137):     r4 00000000  r5 001f6ff0 r6 b23784e4  r7 000004e0

I/DEBUG  (  137):     r8 b2378008  r9 b68afb63 sl ffffffff  fp ffffffff

I/DEBUG  (  137):     ip c0000000  sp b276eca8 lr b683f4fd  pc b6e46f4c  cpsr a00d0010

I/DEBUG  (  137):     d0  ffffffffffffffff  d1 ffffffffffffffff

I/DEBUG  (  137):     d2 ffffffffffffff68  d3  ffffffffffffff20

I/DEBUG  (  137):     d4 000000000000000c  d5  00000000000024c7

I/DEBUG  (  137):     d6 3f115304c906e15c  d7  00000000ae74f745

I/DEBUG  (  137):     d8 0000000000000000  d9  0000000000000000

I/DEBUG  (  137):     d10 0000000000000000  d11 0000000000000000

I/DEBUG  (  137):     d12 0000000000000000  d13 0000000000000000

I/DEBUG  (  137):     d14 0000000000000000  d15 0000000000000000

I/DEBUG  (  137):     d16 000000000007a120  d17 000000000000000f

I/DEBUG  (  137):     d18 0000000000000000  d19 3fc668957b800000

I/DEBUG  (  137):     d20 3fc5528bb2399beb  d21 3e66376972bea4d0

I/DEBUG  (  137):     d22 3fc5c149e20e5f98  d23 3fe0000000000000

I/DEBUG  (  137):     d24 3ffd47d6c3be340d  d25 3f90a630b3499dc0

I/DEBUG  (  137):     d26 4019868341953dcc  d27 4000000000000000

I/DEBUG  (  137):     d28 bf90a630b690dba7  d29 bfc87d5b92521b75

I/DEBUG  (  137):     d30 3ff0000000000000  d31 3fe30fab724a436f

I/DEBUG  (  137):     scr 60000010

I/DEBUG  (  137):

I/DEBUG  (  137): backtrace:

I/DEBUG  (  137):     #00 pc 0001cf4c  /system/lib/libc.so(memcpy+412)

I/DEBUG (137): #01  pc 0006a4f9 /system/lib/libstagefright.so (android::MPEG4Source::read(android::MediaBuffer**,android::MediaSource::ReadOptions const*)+2136)

I/DEBUG ( 137): #02  pc 00081e0d /system/lib/libstagefright.so(android::OMXCodec::drainInputBuffer(android::OMXCodec::BufferInfo*)+484)

I/DEBUG (137): #03  pc 0008631d /system/lib/libstagefright.so(android::OMXCodec::on_message(android::omx_message const&)+384)

I/DEBUG  (  137):     #04 pc 000867d1 /system/lib/libstagefright.so

I/DEBUG  (  137):     #05 pc 0000fadb /system/lib/libstagefright_omx.so (android::OMXNodeInstance::onMessage(android::omx_messageconst&)+86)

I/DEBUG  (  137):     #06 pc 0000dc53 /system/lib/libstagefright_omx.so(android::OMX::CallbackDispatcher::loop()+90)

I/DEBUG  (  137):     #07 pc 000119e5 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+216)

I/DEBUG  (  137):     #08 pc 000114d9 /system/lib/libutils.so

I/DEBUG  (  137):     #09 pc 0000ca90  /system/lib/libc.so(__thread_entry+72)

I/DEBUG  (  137):     #10 pc 0000cc0c  /system/lib/libc.so(pthread_create+208)

I/DEBUG  (  137):

I/DEBUG  (  137): stack:

I/DEBUG  (  137):          b276ec68  b276ec8c [stack:1781]

I/DEBUG  (  137):          b276ec6c  00000000

I/DEBUG  (  137):          b276ec70  00003bb3

I/DEBUG  (  137):          b276ec74  b682c809 /system/lib/libstagefright.so

I/DEBUG  (  137):          b276ec78  0b604b60

I/DEBUG  (  137):          b276ec7c  b683cf1d /system/lib/libstagefright.so (android::MPEG4DataSource::readAt(longlong, void*, unsigned int)+112)

I/DEBUG  (  137):          b276ec80  b2181008

I/DEBUG  (  137):          b276ec84  000b1e48

I/DEBUG  (  137):          b276ec88  b8a4ae70 [heap]

I/DEBUG  (  137):          b276ec8c  b8a4a32c [heap]

I/DEBUG  (  137):          b276ec90  b8a4ae5c [heap]

I/DEBUG  (  137):          b276ec94  b8a48da8 [heap]

I/DEBUG  (  137):          b276ec98  000b1e48

I/DEBUG  (  137):          b276ec9c  99d517c6

I/DEBUG  (  137):          b276eca0  df0027ad

I/DEBUG  (  137):          b276eca4  00000000

I/DEBUG  (  137):     #00 b276eca8  b8a48da8  [heap]

I/DEBUG  (  137):          b276ecac  ffffffff

I/DEBUG  (  137):          b276ecb0  b23784e8

I/DEBUG  (  137):          b276ecb4  b683f4fd /system/lib/libstagefright.so(android::MPEG4Source::read(android::MediaBuffer**,android::MediaSource::ReadOptions const*)+2140)

 

解决过程:

1、  Fatal代表出现了错误。

2、  backtrack 中可以查找pc

3、 

4、  查找pc0x0006a4f9

5、  out路径下,查找libstagefright.so文件所在的路径

out/target/product/ardbeg/obj/SHARED_LIBRARIES/libstagefright_intermediates/LINKED

6、输入: addr2line –e./libstagefright.so 0x0006a4f9   即可找到该文件在哪行出错。

同样的,也可以用lr   pc  在模块中查找

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值