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

一、现象

 F/libc    ( ): Fatal signal  (SIGSEGV) at 0x00000000 (code=), thread  (CameraPreviewTh)
I/DEBUG ( ): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( ): Build fingerprint: 'TV/tclm6/tclm6:4.2.1/V8-AML7601-LF1R001/20130523:eng/test-keys'
I/DEBUG ( ): Revision: ''
I/DEBUG ( ): pid: , tid: , name: CameraPreviewTh >>> /system/bin/mediaserver <<<
I/DEBUG ( ): signal (SIGSEGV), code (SEGV_MAPERR), fault addr
I/DEBUG ( ): r0 r1 r2 r3 0000001e
I/DEBUG ( ): r4 r5 r6 r7
I/DEBUG ( ): r8 r9 sl 00000f00 fp 45498f00
I/DEBUG ( ): ip sp 46054d80 lr 4410816f pc cpsr
I/DEBUG ( ): d0 696765623e3e3e31 d1 3e3e3e2d2d2d2d2d
I/DEBUG ( ): d2 3234767975793e3e d3 32766e5f6f745f32
I/DEBUG ( ): d4 54535f5745495645 d5 4552503e2d455441
I/DEBUG ( ): d6 4154535f57454956 d7
I/DEBUG ( ): d8 d9
I/DEBUG ( ): d10 d11
I/DEBUG ( ): d12 d13
I/DEBUG ( ): d14 d15
I/DEBUG ( ): d16 d17
I/DEBUG ( ): d18 d19 bf66c168e3a87def
I/DEBUG ( ): d20 3fc555533bceb625 d21 3e66376972bea4d0
I/DEBUG ( ): d22 3fb0271122ac41c2 d23 bf8388915620e116
I/DEBUG ( ): d24 3ff0271122ac41c2 d25
I/DEBUG ( ): d26 d27
I/DEBUG ( ): d28 d29
I/DEBUG ( ): d30 d31
I/DEBUG ( ): scr
I/DEBUG ( ):
I/DEBUG ( ): backtrace:
I/DEBUG ( ): # pc 0002e214 /system/lib/hw/camera.meson6.so (yuyv422_to_nv21(unsigned char*, unsigned char*, int, int)+)
I/DEBUG ( ): # pc 0002d05b /system/lib/hw/camera.meson6.so (android::V4LCameraAdapter::previewThread()+)
I/DEBUG ( ): # pc 0002d145 /system/lib/hw/camera.meson6.so
I/DEBUG ( ): # pc /system/lib/libutils.so (android::Thread::_threadLoop(void*)+)
I/DEBUG ( ): # pc 00010dcd /system/lib/libutils.so
I/DEBUG ( ): # pc 0000e478 /system/lib/libc.so (__thread_entry+)
I/DEBUG ( ): # pc 0000db64 /system/lib/libc.so (pthread_create+)
I/DEBUG ( ):
I/DEBUG ( ): stack:
I/DEBUG ( ): 46054d40 401da160 /system/lib/libc.so
I/DEBUG ( ): 46054d44 401b3a6d /system/lib/libc.so (vfprintf+)
I/DEBUG ( ): 46054d48 000001e0
I/DEBUG ( ): 46054d4c
I/DEBUG ( ): 46054d50 4411bce1 /system/lib/hw/camera.meson6.so
I/DEBUG ( ): 46054d54 /dev/video0
I/DEBUG ( ): 46054d58
I/DEBUG ( ): 46054d5c 401b167d /system/lib/libc.so (printf+)
I/DEBUG ( ): 46054d60 4411d5fa /system/lib/hw/camera.meson6.so
I/DEBUG ( ): 46054d64 46054d74
I/DEBUG ( ): 46054d68
I/DEBUG ( ): 46054d6c 4410816f /system/lib/hw/camera.meson6.so (yuyv422_to_nv21(unsigned char*, unsigned char*, int, int)+)
I/DEBUG ( ): 46054d70 4411d5fa /system/lib/hw/camera.meson6.so
I/DEBUG ( ): 46054d74
I/DEBUG ( ): 46054d78 df0027ad
I/DEBUG ( ): 46054d7c
I/DEBUG ( ): # 46054d80
I/DEBUG ( ): 46054d84 /dev/video0
I/DEBUG ( ): 46054d88 /dev/video0
I/DEBUG ( ): 46054d8c 45498a00 /dev/video0
I/DEBUG ( ): 46054d90
I/DEBUG ( ): 46054d94 0004b000
I/DEBUG ( ): 46054d98 0004b280
I/DEBUG ( ): 46054d9c 0004b001
I/DEBUG ( ): 46054da0 0004b281
I/DEBUG ( ): 46054da4 /dev/video0
I/DEBUG ( ): 46054da8 /dev/video0
I/DEBUG ( ): 46054dac 45498a00 /dev/video0
I/DEBUG ( ): 46054db0 45498f00 /dev/video0
I/DEBUG ( ): 46054db4 /dev/video0
I/DEBUG ( ): 46054db8 45498a01 /dev/video0
I/DEBUG ( ): 46054dbc /dev/video0
I/DEBUG ( ): ........ ........
I/DEBUG ( ): # 46054e08
I/DEBUG ( ): 46054e0c
I/DEBUG ( ): 46054e10
I/DEBUG ( ): 46054e14
I/DEBUG ( ): 46054e18
I/DEBUG ( ): 46054e1c
I/DEBUG ( ): 46054e20
I/DEBUG ( ): 46054e24
I/DEBUG ( ): 46054e28
I/DEBUG ( ): 46054e2c 000001e0
I/DEBUG ( ): 46054e30
I/DEBUG ( ): 46054e34
I/DEBUG ( ): 46054e38
I/DEBUG ( ): 46054e3c
I/DEBUG ( ): 46054e40
I/DEBUG ( ): 46054e44
I/DEBUG ( ): ........ ........
I/DEBUG ( ): # 46054e98
I/DEBUG ( ): 46054e9c /system/lib/libutils.so (android::Thread::_threadLoop(void*)+)
I/DEBUG ( ):
I/DEBUG ( ): memory near r2:
I/DEBUG ( ): 454984e0 ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): 454984f0 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): 454985a0 ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): 454985b0 ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): 454985c0 ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): 454985d0 ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ):
I/DEBUG ( ): memory near fp:
I/DEBUG ( ): 45498ee0 ffffffff ffffffff ffffffff ffffffffI/DEBUG ( ): 45498ef0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( ): 45498f00 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f10 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f20 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f30 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f40 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f50 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f60 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f70 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f80 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498f90 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498fa0 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498fb0 ffffffff ffffffff ffffffff ffffffff I/DEBUG ( ): 45498fc0 ffffffff ffffffff ffffffff..

二、解决

1.分析其中的重要信息

 I/DEBUG   ( ):     #  pc 0002e180  /system/lib/hw/camera.meson6.so (yuyv422_to_nv21(unsigned char*, unsigned char*, int, int)+)
I/DEBUG ( ): # pc 0002d00b /system/lib/hw/camera.meson6.so (android::V4LCameraAdapter::previewThread()+)
I/DEBUG ( ): # pc 0002d0dd /system/lib/hw/camera.meson6.so
I/DEBUG ( ): # pc /system/lib/libutils.so (android::Thread::_threadLoop(void*)+)
I/DEBUG ( ): # pc 00010dcd /system/lib/libutils.so
I/DEBUG ( ): # pc 0000e478 /system/lib/libc.so (__thread_entry+)
I/DEBUG ( ): # pc 0000db64 /system/lib/libc.so (pthread_create+)

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:

 D/V4LCameraAdapter( ): TK----------->>>>>src is 0x45d0f000
D/V4LCameraAdapter( ): TK---------->>>>>>dest is 0x0
D/V4LCameraAdapter( ): TK------------>>>>>width is
D/V4LCameraAdapter( ): TK--------->>>>>height is

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

4.解决

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

三、思考

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

四、补充:Fatal signal 8 (SIGFPE)

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

 F/libc    ( ): Fatal signal  (SIGFPE) at 0x00000cb6 (code=), thread  (TVMSFserver)
I/DEBUG ( ): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( ): Build fingerprint: 'TV/tclm6/tclm6:4.2.2/V8-AML7602-LF1V002/20140520:eng/test-keys'
I/DEBUG ( ): Revision: ''
I/DEBUG ( ): pid: , tid: , name: TVMSFserver >>> TVMSFserver <<<
I/DEBUG ( ): signal (SIGFPE), code - (?), fault addr 00000cb6
D/atv_hd ( ): ATVTunerSetStd, tuner std = 0x40000e0(V4L2_COLOR_STD_PAL, V4L2_STD_PAL_DK).
I/DEBUG ( ): r0 r1 r2 0000270f r3
I/DEBUG ( ): r4 r5 ffffffff r6 r7
I/DEBUG ( ): r8 r9 sl 4012e228 fp bed8ca2c
I/DEBUG ( ): ip fffdc390 sp bed8c660 lr 4011e010 pc 400fc27c cpsr 200a0010
I/DEBUG ( ): d0 6168772d2d2d2d2d d1 5654582d2d2d2d2d
I/DEBUG ( ): d2 6b6361626c6c6163 d3 2d2d2d2d7070632e
I/DEBUG ( ): d4 6c6c61635654582d d5 45533a3a6b636162
I/DEBUG ( ): d6 4c41435f48435241 d7 2d2d2d4b4341424c
I/DEBUG ( ): d8 d9
I/DEBUG ( ): d10 d11
I/DEBUG ( ): d12 d13
I/DEBUG ( ): d14 d15
I/DEBUG ( ): d16 41d4e400c2003127 d17 3f50624dd2f1a9fc
I/DEBUG ( ): d18 41cc382ea1800000 d19
I/DEBUG ( ): d20 d21
I/DEBUG ( ): d22 d23
I/DEBUG ( ): d24 d25
I/DEBUG ( ): d26 d27
I/DEBUG ( ): d28 d29
I/DEBUG ( ): d30 d31
I/DEBUG ( ): scr
I/DEBUG ( ):
I/DEBUG ( ): backtrace:
I/DEBUG ( ): # pc 0001827c /system/lib/libc.so (kill+)
I/DEBUG ( ): # pc 0003a00c /system/lib/libc.so (__aeabi_idiv0+)
I/DEBUG ( ):
I/DEBUG ( ): stack:
I/DEBUG ( ): bed8c620
I/DEBUG ( ): bed8c624
I/DEBUG ( ): bed8c628
I/DEBUG ( ): bed8c62c
I/DEBUG ( ): bed8c630
I/DEBUG ( ): bed8c634 /system/lib/libamplayer.so (ff_ps_init+)
I/DEBUG ( ): bed8c638
I/DEBUG ( ): bed8c63c
I/DEBUG ( ): bed8c640 ffffffe0
I/DEBUG ( ): bed8c644
I/DEBUG ( ): bed8c648
I/DEBUG ( ): bed8c64c
I/DEBUG ( ): bed8c650
I/DEBUG ( ): bed8c654
I/DEBUG ( ): bed8c658 df0027ad
I/DEBUG ( ): bed8c65c
I/DEBUG ( ): # bed8c660
I/DEBUG ( ): ........ ........
I/DEBUG ( ): # bed8c660
I/DEBUG ( ): bed8c664 ffffffff
I/DEBUG ( ): bed8c668
I/DEBUG ( ): bed8c66c bed8c6a0 [stack]
I/DEBUG ( ): bed8c670 fffdc390
I/DEBUG ( ): bed8c674 4011e010 /system/lib/libc.so (__aeabi_idiv0+)
I/DEBUG ( ): bed8c678
I/DEBUG ( ): bed8c67c 4038223d /data/test/libTVMSFService.so (android::postEventsFromhal(int, android::Parcel const*)+)
I/DEBUG ( ): bed8c680
I/DEBUG ( ): bed8c684
I/DEBUG ( ): bed8c688 41bd2c28
I/DEBUG ( ): bed8c68c
I/DEBUG ( ): bed8c690 000c2e2a
I/DEBUG ( ): bed8c694
I/DEBUG ( ): bed8c698
I/DEBUG ( ): bed8c69c 418fbb01 /data/test/libdtvapi_dtv.so (std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::xsputn(char const*, int)+)

通过地址定位:

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

结果:

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

 ENTRY(kill)
stmfd sp!, {r4-r7, ip, lr}
ldr r7, =__NR_kill
swi #
ldmfd sp!, {r4-r7, ip, lr} //46行,恢复现场
movs r0, r0
bxpl lr
b __set_syscall_errno
END(kill)

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

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

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

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

暂时,不知道怎么搞还

A/libc:fatal signal 11(SIGSEGV).code 1, fault addr 0x0 in tid 26488 (VideoEncoder)的更多相关文章

  1. 17.出现fatal signal(SIGSEGV),code 1,fault addr 0x0 in tid 29931的问题

    原因是: 在onCreate方法里面调一些东西的时候,有时候系统相关的东西还没有初始化完,你的代码就已经执行了,会出现一些问题  解决方法: 增加延时1s /一.第一步初始化,此处用的是demo的ap ...

  2. Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1) 错误 解决方案(android-ndk)

    在android里做ndk编程的时候,碰到个随机性错误 错误信息如下: 05-06 15:59:44.411: A/libc(3347): Fatal signal 11 (SIGSEGV) at 0 ...

  3. 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)

    近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号.Windows平台上表现非常正常,没有出现什么问题. 上周五准备公布一个安卓包,编译非常轻松的就 ...

  4. ANDROID开发 Fatal signal 11(SIGSEGV) at 0x问题解决方案

    最近做ANDROID开发,也遇到了很多程序员遇到的一个问题:FATAL SIGNAL 11(SIGSEGV) at 0xxxxx,自然是各种搜索是否有人已然解决,虽然搜索出来的已有案例不少,基本都是内 ...

  5. Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 1755 (CrBrowserMain)问题

  6. [cocos2d-x][apk打包][Fatal signal 11][andriod]Eclipse编译Fatal signal 11报错-都是字符赋值惹的祸

    流程重现: 使用coco2d-x制作了一个2048,在xcode模拟器执行以及在pad上真机调试都是没有问题的. 可是在使用eclipse调试打包android可以执行,可是进入游戏之后会在随机的地方 ...

  7. Fatal signal xx (SIGSEGV) at

    Fatal signal 11问题的解决方法 http://blog.csdn.net/tankai19880619/article/details/9004619 如何定位Android NDK开发 ...

  8. Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

    使用Qt写了个窗口,运行报错,无法正常运行python程序,获得的报错信息如下: Process finished with exit code 139 (interrupted by signal ...

  9. [报错] Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

    今天下午做python的作业,我用PyQt5 中 利用QWebEngineView打开外部网页. 但是一直闪退,一运行就闪退. 显示报错:Process finished with exit code ...

随机推荐

  1. Python学习笔记014——迭代工具函数 内置函数zip()

    1 描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操 ...

  2. BIP_BI Pubisher的基本语法(概念)

    2014-05-31 Created By BaoXinjian

  3. Unix环境高级编程(一)文件I/O

    Unix系统中大多数文件I/O只需用到五个函数:open.read.write.lseek.close.本章说介绍的I/O是不带缓冲的,即:每个read和write都调用内核中的一个系统调用.不是IS ...

  4. Linux的七个运行级别原理概述

    所谓运行级别,简单点来说,运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init程序寻找的主要文件,最先运行的服务 ...

  5. JSON概述及其在JavaScript与Java中的应用(整理)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成. 官网:http://json.org/ ...

  6. Spark核心概念理解

    本文主要内容来自于<Hadoop权威指南>英文版中的Spark章节,能够说是个人的翻译版本号,涵盖了基本的Spark概念.假设想获得更好地阅读体验,能够訪问这里. 安装Spark 首先从s ...

  7. win常用

    //base.Invoke((MethodInvoker)delegate() //{ // this.Close(); //});

  8. c# 获取当前程序运行根目录

    //获取绝对路径,调用如 string fileName = string.Format("~/RuleConfigFiles/Campaign_{0}.JSON", Campai ...

  9. 向Oracle数据库插入一条数据

    这几天搞了一下Oracle数据库.可能用sql server习惯了,感觉好不方便.PL的界面友好度比sql server差远了 .既然都收购了PL了 为什么不给它做好一点呢?各种不便.郁闷 向Orac ...

  10. angular学习笔记(十四)-$watch(4)

    如果需要同时监测多个属性或者对象,并且执行的是同样的回调,可以有两种选择: 1. 监测这些属性连接起来之后的值: $scope.$watch('objOne.a+objTwo.b+...', watc ...