A/libc:fatal signal 11(SIGSEGV).code 1, fault addr 0x0 in tid 26488 (VideoEncoder)
在调试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)的更多相关文章
- 17.出现fatal signal(SIGSEGV),code 1,fault addr 0x0 in tid 29931的问题
原因是: 在onCreate方法里面调一些东西的时候,有时候系统相关的东西还没有初始化完,你的代码就已经执行了,会出现一些问题 解决方法: 增加延时1s /一.第一步初始化,此处用的是demo的ap ...
- 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 ...
- 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号.Windows平台上表现非常正常,没有出现什么问题. 上周五准备公布一个安卓包,编译非常轻松的就 ...
- ANDROID开发 Fatal signal 11(SIGSEGV) at 0x问题解决方案
最近做ANDROID开发,也遇到了很多程序员遇到的一个问题:FATAL SIGNAL 11(SIGSEGV) at 0xxxxx,自然是各种搜索是否有人已然解决,虽然搜索出来的已有案例不少,基本都是内 ...
- Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 1755 (CrBrowserMain)问题
- [cocos2d-x][apk打包][Fatal signal 11][andriod]Eclipse编译Fatal signal 11报错-都是字符赋值惹的祸
流程重现: 使用coco2d-x制作了一个2048,在xcode模拟器执行以及在pad上真机调试都是没有问题的. 可是在使用eclipse调试打包android可以执行,可是进入游戏之后会在随机的地方 ...
- Fatal signal xx (SIGSEGV) at
Fatal signal 11问题的解决方法 http://blog.csdn.net/tankai19880619/article/details/9004619 如何定位Android NDK开发 ...
- Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
使用Qt写了个窗口,运行报错,无法正常运行python程序,获得的报错信息如下: Process finished with exit code 139 (interrupted by signal ...
- [报错] Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
今天下午做python的作业,我用PyQt5 中 利用QWebEngineView打开外部网页. 但是一直闪退,一运行就闪退. 显示报错:Process finished with exit code ...
随机推荐
- 《JAVA与模式》之有感
陆陆续续看了gof,大话设计模式等books,对于设计模式仍然是徘徊于门外,随偶有感悟,然久必忘记,是实则悟性太低. 因此作此文,结合博客中一系列关于设计模式的博文,加深对设计模式的理解,同时备自己随 ...
- SQL SERVER 2005允许自定义聚合函数-表中字符串分组连接
不多说了,说明后面是完整的代码,用来将字符串型的字段的各行的值拼成一个大字符串,也就是通常所说的Concat 例如有如下表dict ID NAME CATEGORY 1 RED COLOR ...
- DBA_实践指南系列2_Oracle Erp R12系统安装配置设定Setup(案例)
2013-12-02 Created By BaoXinjian
- Linux中断 - 驱动申请中断API
一.前言 本文主要的议题是作为一个普通的驱动工程师,在撰写自己负责的驱动的时候,如何向Linux Kernel中的中断子系统注册中断处理函数?为了理解注册中断的接口,必须了解一些中断线程化(threa ...
- Unix环境高级编程(三)标准I/O库
标准I/O库是ISO C的标准,在很多操作系统上面都实现.Unix文件I/O函数都是针对文件描述符的,当打开一个文件的时候,返回该文件描述符用于后续的I/O操作.而对于标准I/O库,操作则是围绕流进行 ...
- react 事件绑定的2种常用方式
方式一:传统 import React, { Component } from 'react'; class App extends Component { handleSubmit (e, args ...
- 使用 dockerfile 创建镜像
dockerfile 是一个文本格式的配置文件,可以使用 dockerfile 快速创建自定义的镜像. dockerfile 一般包含4部分信息:基础镜像信息.维护者信息.镜像操作指令.容器启动时执行 ...
- php里面的注解(通过反射获取注解)
/** * Created by PhpStorm. * User: Administrator * Date: 2018\10\12 0012 * Time: 14:30 */ /** * clas ...
- laravel中间件简单使用
laravel内置了一个中间件来验证用户是否经过认证,如果用户没有经过认证,中间件会将用户重定向到登录页面,否则如果用户经过认证,中间件就会允许请求继续往前进入下一步操作. 当然,除了认证之外,中间件 ...
- Java 小数类 及四舍五入的方法 精度非常高的小数时用
注意假设结果是无限位小数,不指定位数进行四舍五入的话会报错 import java.util.Scanner; import java.math.BigDecimal; public class Ma ...