zoukankan      html  css  js  c++  java
  • A/libc:fatal signal 11(SIGSEGV).code 1, fault addr 0x0 in tid 26488 (VideoEncoder)

    在调试Camera模块;发现相同的代码在厂家提供的环境里边编译、就是ok的,在我们的源码树中编译,将HAL库推进去后、就会signal 11退出。

    一、现象

     1 F/libc    ( 4250): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 4358 (CameraPreviewTh)  
     2 I/DEBUG   ( 2366): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***  
     3 I/DEBUG   ( 2366): Build fingerprint: 'TV/tclm6/tclm6:4.2.1/V8-AML7601-LF1R001/20130523:eng/test-keys'  
     4 I/DEBUG   ( 2366): Revision: '32'  
     5 I/DEBUG   ( 2366): pid: 4250, tid: 4358, name: CameraPreviewTh  >>> /system/bin/mediaserver <<<  
     6 I/DEBUG   ( 2366): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000  
     7 I/DEBUG   ( 2366):     r0 00000000  r1 00000500  r2 45498500  r3 0000001e  
     8 I/DEBUG   ( 2366):     r4 00000280  r5 00000000  r6 00000780  r7 00000000  
     9 I/DEBUG   ( 2366):     r8 00000500  r9 00000780  sl 00000f00  fp 45498f00  
    10 I/DEBUG   ( 2366):     ip 00000280  sp 46054d80  lr 4410816f  pc 44108214  cpsr 80030030  
    11 I/DEBUG   ( 2366):     d0  696765623e3e3e31  d1  3e3e3e2d2d2d2d2d  
    12 I/DEBUG   ( 2366):     d2  3234767975793e3e  d3  32766e5f6f745f32  
    13 I/DEBUG   ( 2366):     d4  54535f5745495645  d5  4552503e2d455441  
    14 I/DEBUG   ( 2366):     d6  4154535f57454956  d7  0000823549742400  
    15 I/DEBUG   ( 2366):     d8  0000000000000000  d9  0000000000000000  
    16 I/DEBUG   ( 2366):     d10 0000000000000000  d11 0000000000000000  
    17 I/DEBUG   ( 2366):     d12 0000000000000000  d13 0000000000000000  
    18 I/DEBUG   ( 2366):     d14 0000000000000000  d15 0000000000000000  
    19 I/DEBUG   ( 2366):     d16 0000000000000000  d17 0000000000000000  
    20 I/DEBUG   ( 2366):     d18 4000000000000000  d19 bf66c168e3a87def  
    21 I/DEBUG   ( 2366):     d20 3fc555533bceb625  d21 3e66376972bea4d0  
    22 I/DEBUG   ( 2366):     d22 3fb0271122ac41c2  d23 bf8388915620e116  
    23 I/DEBUG   ( 2366):     d24 3ff0271122ac41c2  d25 0000000000000000  
    24 I/DEBUG   ( 2366):     d26 0000000000000000  d27 0000000000000000  
    25 I/DEBUG   ( 2366):     d28 0000000000000000  d29 0000000000000000  
    26 I/DEBUG   ( 2366):     d30 0000000000000000  d31 0000000000000000  
    27 I/DEBUG   ( 2366):     scr 60000010  
    28 I/DEBUG   ( 2366):   
    29 I/DEBUG   ( 2366): backtrace:  
    30 I/DEBUG   ( 2366):     #00  pc 0002e214  /system/lib/hw/camera.meson6.so (yuyv422_to_nv21(unsigned char*, unsigned char*, int, int)+195)  
    31 I/DEBUG   ( 2366):     #01  pc 0002d05b  /system/lib/hw/camera.meson6.so (android::V4LCameraAdapter::previewThread()+490)  
    32 I/DEBUG   ( 2366):     #02  pc 0002d145  /system/lib/hw/camera.meson6.so  
    33 I/DEBUG   ( 2366):     #03  pc 00011253  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+94)  
    34 I/DEBUG   ( 2366):     #04  pc 00010dcd  /system/lib/libutils.so  
    35 I/DEBUG   ( 2366):     #05  pc 0000e478  /system/lib/libc.so (__thread_entry+72)  
    36 I/DEBUG   ( 2366):     #06  pc 0000db64  /system/lib/libc.so (pthread_create+160)  
    37 I/DEBUG   ( 2366):   
    38 I/DEBUG   ( 2366): stack:  
    39 I/DEBUG   ( 2366):          46054d40  401da160  /system/lib/libc.so  
    40 I/DEBUG   ( 2366):          46054d44  401b3a6d  /system/lib/libc.so (vfprintf+44)  
    41 I/DEBUG   ( 2366):          46054d48  000001e0    
    42 I/DEBUG   ( 2366):          46054d4c  00000280    
    43 I/DEBUG   ( 2366):          46054d50  4411bce1  /system/lib/hw/camera.meson6.so  
    44 I/DEBUG   ( 2366):          46054d54  45498500  /dev/video0  
    45 I/DEBUG   ( 2366):          46054d58  00000003    
    46 I/DEBUG   ( 2366):          46054d5c  401b167d  /system/lib/libc.so (printf+24)  
    47 I/DEBUG   ( 2366):          46054d60  4411d5fa  /system/lib/hw/camera.meson6.so  
    48 I/DEBUG   ( 2366):          46054d64  46054d74    
    49 I/DEBUG   ( 2366):          46054d68  00000280    
    50 I/DEBUG   ( 2366):          46054d6c  4410816f  /system/lib/hw/camera.meson6.so (yuyv422_to_nv21(unsigned char*, unsigned char*, int, int)+30)  
    51 I/DEBUG   ( 2366):          46054d70  4411d5fa  /system/lib/hw/camera.meson6.so  
    52 I/DEBUG   ( 2366):          46054d74  00000000    
    53 I/DEBUG   ( 2366):          46054d78  df0027ad    
    54 I/DEBUG   ( 2366):          46054d7c  00000000    
    55 I/DEBUG   ( 2366):     #00  46054d80  00000280    
    56 I/DEBUG   ( 2366):          46054d84  45498000  /dev/video0  
    57 I/DEBUG   ( 2366):          46054d88  45498500  /dev/video0  
    58 I/DEBUG   ( 2366):          46054d8c  45498a00  /dev/video0  
    59 I/DEBUG   ( 2366):          46054d90  00000780    
    60 I/DEBUG   ( 2366):          46054d94  0004b000    
    61 I/DEBUG   ( 2366):          46054d98  0004b280    
    62 I/DEBUG   ( 2366):          46054d9c  0004b001    
    63 I/DEBUG   ( 2366):          46054da0  0004b281    
    64 I/DEBUG   ( 2366):          46054da4  45498000  /dev/video0  
    65 I/DEBUG   ( 2366):          46054da8  45498500  /dev/video0  
    66 I/DEBUG   ( 2366):          46054dac  45498a00  /dev/video0  
    67 I/DEBUG   ( 2366):          46054db0  45498f00  /dev/video0  
    68 I/DEBUG   ( 2366):          46054db4  45498001  /dev/video0  
    69 I/DEBUG   ( 2366):          46054db8  45498a01  /dev/video0  
    70 I/DEBUG   ( 2366):          46054dbc  45498003  /dev/video0  
    71 I/DEBUG   ( 2366):          ........  ........  
    72 I/DEBUG   ( 2366):     #01  46054e08  00000000    
    73 I/DEBUG   ( 2366):          46054e0c  00000000    
    74 I/DEBUG   ( 2366):          46054e10  00000000    
    75 I/DEBUG   ( 2366):          46054e14  00000000    
    76 I/DEBUG   ( 2366):          46054e18  00000000    
    77 I/DEBUG   ( 2366):          46054e1c  00000000    
    78 I/DEBUG   ( 2366):          46054e20  00000000    
    79 I/DEBUG   ( 2366):          46054e24  00000000    
    80 I/DEBUG   ( 2366):          46054e28  00000280    
    81 I/DEBUG   ( 2366):          46054e2c  000001e0    
    82 I/DEBUG   ( 2366):          46054e30  00000000    
    83 I/DEBUG   ( 2366):          46054e34  00000000    
    84 I/DEBUG   ( 2366):          46054e38  00000000    
    85 I/DEBUG   ( 2366):          46054e3c  00000000    
    86 I/DEBUG   ( 2366):          46054e40  00000000    
    87 I/DEBUG   ( 2366):          46054e44  00000000    
    88 I/DEBUG   ( 2366):          ........  ........  
    89 I/DEBUG   ( 2366):     #02  46054e98  44001498    
    90 I/DEBUG   ( 2366):          46054e9c  40226255  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+96)  
    91 I/DEBUG   ( 2366):   
    92 I/DEBUG   ( 2366): memory near r2:  
    93 I/DEBUG   ( 2366):     454984e0 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     454984f0 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498500 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498510 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498520 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498530 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498540 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498550 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498560 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498570 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498580 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498590 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     454985a0 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     454985b0 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     454985c0 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     454985d0 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):   
    94 I/DEBUG   ( 2366): memory near fp:  
    95 I/DEBUG   ( 2366):     45498ee0 ffffffff ffffffff ffffffff ffffffffI/DEBUG   ( 2366):     45498ef0 ffffffff ffffffff ffffffff ffffffff  
    96 I/DEBUG   ( 2366):     45498f00 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f10 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f20 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f30 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f40 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f50 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f60 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f70 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f80 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498f90 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498fa0 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498fb0 ffffffff ffffffff ffffffff ffffffff I/DEBUG   ( 2366):     45498fc0 ffffffff ffffffff ffffffff..  

    二、解决

    1.分析其中的重要信息

    1 I/DEBUG   ( 2366):     #00  pc 0002e180  /system/lib/hw/camera.meson6.so (yuyv422_to_nv21(unsigned char*, unsigned char*, int, int)+157)  
    2 I/DEBUG   ( 2366):     #01  pc 0002d00b  /system/lib/hw/camera.meson6.so (android::V4LCameraAdapter::previewThread()+458)  
    3 I/DEBUG   ( 2366):     #02  pc 0002d0dd  /system/lib/hw/camera.meson6.so  
    4 I/DEBUG   ( 2366):     #03  pc 00011253  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+94)  
    5 I/DEBUG   ( 2366):     #04  pc 00010dcd  /system/lib/libutils.so  
    6 I/DEBUG   ( 2366):     #05  pc 0000e478  /system/lib/libc.so (__thread_entry+72)  
    7 I/DEBUG   ( 2366):     #06  pc 0000db64  /system/lib/libc.so (pthread_create+160)  

    2.代码跟踪

    操作:
    out/target/product/tclm6/obj/SHARED_LIBRARIES/camera.meson6_intermediates/LINKED
    arm-none-Linux-gnueabi-addr2line 0002e180 -e camera.meson6.so
    结果:
    hardware/amlogic/camera/utils/util.cpp:157      
    ////(*ptrdesty1++) = (*ptrsrcy1);在yuyv422_to_nv21(unsigned char*, unsigned char*, int, int)函数中

    操作:
    arm-none-linux-gnueabi-addr2line 0002d00b -e camera.meson6.so
    结果:
    hardware/amlogic/camera/V4LCameraAdapter/V4LCameraAdapter.cpp:1571   
    //// yuyv422_to_nv21(src,dest,width,height); 

    操作:
    arm-none-linux-gnueabi-addr2line 0002d0dd -e camera.meson6.so
    结果:
    hardware/amlogic/camera/V4LCameraAdapter/V4LCameraAdapter.cpp:303    
    ////writefile((char*)SYSFILE_CAMERA_SET_PARA, (char*)"1");

    3.分析

        从上边结果来看,在hardware/amlogic/camera/V4LCameraAdapter/V4LCameraAdapter.cpp:1571处调用yuyv422_to_nv21(src,dest,width,height)挂掉的可能性比较打;于是加如下log:

    1 D/V4LCameraAdapter( 2371): TK----------->>>>>src is 0x45d0f000  
    2 D/V4LCameraAdapter( 2371): TK---------->>>>>>dest is 0x0  
    3 D/V4LCameraAdapter( 2371): TK------------>>>>>width is 640  
    4 D/V4LCameraAdapter( 2371): TK--------->>>>>height is 480  

      不难发现,上边dest指针为NULL、导致的signal 11。

    4.解决

      通过对比编译环境发现,在dest赋值处;用到的头文件位置不同,导致结果差异。通过重新设置头文件路径,问题解决。

    三、思考

      目前掌握的结局signal 11故障的方法是使用交叉编译工具链给我们提供的arm-none-linux-gnueabi-addr2line工具,通过地址定位源文件中出错的函数或具体行数。

    四、补充:Fatal signal 8 (SIGFPE)

      最近在帮助同事看一个打印堆栈问题时发现,程序并没有被kill掉

     1 F/libc    ( 3254): Fatal signal 8 (SIGFPE) at 0x00000cb6 (code=0), thread 3254 (TVMSFserver)  
     2 I/DEBUG   ( 2455): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***  
     3 I/DEBUG   ( 2455): Build fingerprint: 'TV/tclm6/tclm6:4.2.2/V8-AML7602-LF1V002/20140520:eng/test-keys'  
     4 I/DEBUG   ( 2455): Revision: '32'  
     5 I/DEBUG   ( 2455): pid: 3254, tid: 3254, name: TVMSFserver  >>> TVMSFserver <<<  
     6 I/DEBUG   ( 2455): signal 8 (SIGFPE), code -6 (?), fault addr 00000cb6  
     7 D/atv_hd  ( 2439): ATVTunerSetStd, tuner std = 0x40000e0(V4L2_COLOR_STD_PAL, V4L2_STD_PAL_DK).  
     8 I/DEBUG   ( 2455):     r0 00000000  r1 00000008  r2 0000270f  r3 00000000  
     9 I/DEBUG   ( 2455):     r4 00000000  r5 ffffffff  r6 00000000  r7 00000025  
    10 I/DEBUG   ( 2455):     r8 00000001  r9 00000000  sl 4012e228  fp bed8ca2c  
    11 I/DEBUG   ( 2455):     ip fffdc390  sp bed8c660  lr 4011e010  pc 400fc27c  cpsr 200a0010  
    12 I/DEBUG   ( 2455):     d0  6168772d2d2d2d2d  d1  5654582d2d2d2d2d  
    13 I/DEBUG   ( 2455):     d2  6b6361626c6c6163  d3  2d2d2d2d7070632e  
    14 I/DEBUG   ( 2455):     d4  6c6c61635654582d  d5  45533a3a6b636162  
    15 I/DEBUG   ( 2455):     d6  4c41435f48435241  d7  2d2d2d4b4341424c  
    16 I/DEBUG   ( 2455):     d8  0000000000000000  d9  0000000000000000  
    17 I/DEBUG   ( 2455):     d10 0000000000000000  d11 0000000000000000  
    18 I/DEBUG   ( 2455):     d12 0000000000000000  d13 0000000000000000  
    19 I/DEBUG   ( 2455):     d14 0000000000000000  d15 0000000000000000  
    20 I/DEBUG   ( 2455):     d16 41d4e400c2003127  d17 3f50624dd2f1a9fc  
    21 I/DEBUG   ( 2455):     d18 41cc382ea1800000  d19 0000000000000000  
    22 I/DEBUG   ( 2455):     d20 0000000000000000  d21 0000000000000000  
    23 I/DEBUG   ( 2455):     d22 0000000000000000  d23 0000000000000000  
    24 I/DEBUG   ( 2455):     d24 0000000000000000  d25 0000000000000000  
    25 I/DEBUG   ( 2455):     d26 0000000000000000  d27 0000000000000000  
    26 I/DEBUG   ( 2455):     d28 0000000000000000  d29 0000000000000000  
    27 I/DEBUG   ( 2455):     d30 0000000000000000  d31 0000000000000000  
    28 I/DEBUG   ( 2455):     scr 00000010  
    29 I/DEBUG   ( 2455):  
    30 I/DEBUG   ( 2455): backtrace:  
    31 I/DEBUG   ( 2455):     #00  pc 0001827c  /system/lib/libc.so (kill+12)  
    32 I/DEBUG   ( 2455):     #01  pc 0003a00c  /system/lib/libc.so (__aeabi_idiv0+8)  
    33 I/DEBUG   ( 2455):  
    34 I/DEBUG   ( 2455): stack:  
    35 I/DEBUG   ( 2455):          bed8c620  00000008  
    36 I/DEBUG   ( 2455):          bed8c624  00000000  
    37 I/DEBUG   ( 2455):          bed8c628  00000000  
    38 I/DEBUG   ( 2455):          bed8c62c  00000000  
    39 I/DEBUG   ( 2455):          bed8c630  00000000  
    40 I/DEBUG   ( 2455):          bed8c634  41010001  /system/lib/libamplayer.so (ff_ps_init+1361)  
    41 I/DEBUG   ( 2455):          bed8c638  00000000  
    42 I/DEBUG   ( 2455):          bed8c63c  00000030  
    43 I/DEBUG   ( 2455):          bed8c640  ffffffe0  
    44 I/DEBUG   ( 2455):          bed8c644  00000000  
    45 I/DEBUG   ( 2455):          bed8c648  00000000  
    46 I/DEBUG   ( 2455):          bed8c64c  00000000  
    47 I/DEBUG   ( 2455):          bed8c650  00000000  
    48 I/DEBUG   ( 2455):          bed8c654  00000000  
    49 I/DEBUG   ( 2455):          bed8c658  df0027ad  
    50 I/DEBUG   ( 2455):          bed8c65c  00000000  
    51 I/DEBUG   ( 2455):     #00  bed8c660  00000000  
    52 I/DEBUG   ( 2455):          ........  ........  
    53 I/DEBUG   ( 2455):     #01  bed8c660  00000000  
    54 I/DEBUG   ( 2455):          bed8c664  ffffffff  
    55 I/DEBUG   ( 2455):          bed8c668  00000000  
    56 I/DEBUG   ( 2455):          bed8c66c  bed8c6a0  [stack]  
    57 I/DEBUG   ( 2455):          bed8c670  fffdc390  
    58 I/DEBUG   ( 2455):          bed8c674  4011e010  /system/lib/libc.so (__aeabi_idiv0+12)  
    59 I/DEBUG   ( 2455):          bed8c678  00000000  
    60 I/DEBUG   ( 2455):          bed8c67c  4038223d  /data/test/libTVMSFService.so (android::postEventsFromhal(int, android::Parcel const*)+236)  
    61 I/DEBUG   ( 2455):          bed8c680  00000002  
    62 I/DEBUG   ( 2455):          bed8c684  00000002  
    63 I/DEBUG   ( 2455):          bed8c688  41bd2c28  
    64 I/DEBUG   ( 2455):          bed8c68c  00000063  
    65 I/DEBUG   ( 2455):          bed8c690  000c2e2a  
    66 I/DEBUG   ( 2455):          bed8c694  00000003  
    67 I/DEBUG   ( 2455):          bed8c698  00000004  
    68 I/DEBUG   ( 2455):          bed8c69c  418fbb01  /data/test/libdtvapi_dtv.so (std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::xsputn(char const*, int)+8)  


    通过地址定位:

    arm-none-linux-gnueabi-addr2line 0001827c -e libc.so

      结果:

    bionic/libc/arch-arm/bionic/kill.S:46

    1 ENTRY(kill)  
    2     stmfd   sp!, {r4-r7, ip, lr}  
    3     ldr     r7, =__NR_kill  
    4     swi     #0  
    5     ldmfd   sp!, {r4-r7, ip, lr}  //46行,恢复现场  
    6     movs    r0, r0  
    7     bxpl    lr  
    8     b       __set_syscall_errno  
    9 END(kill)  

      后发现signal 8问题一般是由于除数为0导致,后问题解决;通过该问题分析:可能是因为signal 8后系统需要kill该进程、但没有kill成功。

    转自:http://blog.csdn.net/tankai19880619/article/details/9004619

    好吧 其实我并没有看懂。。。(摊手)先马着,万一我哪天想通了呢...

    我本身的问题是出在视频硬编码的时候,出现signal 11的错误

    暂时,不知道怎么搞还

  • 相关阅读:
    MyBatis通过Mapper动态代理来实现curd操作
    通过Mybatis原始Dao来实现curd操作
    MyBatis最原始的实现curd的操作
    通过重写request.getParameter方法来解决中文乱码问题。
    第九章:Servlet工作原理解析
    简述servlet
    Java中几个常用并发队列比较 | Baeldung
    记录java程序一次CPU占用90%问题排查过程
    日志查看
    mongo
  • 原文地址:https://www.cnblogs.com/Sharley/p/6605347.html
Copyright © 2011-2022 走看看