android ndk抛出 signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0088d410的异常分析
http://www.drovik.com/ 2013-3-19 16:02:42 来源:www.drovik.com 点击:
android开发中,为了提高程序运行的效率,经常会将复杂的数据运算放在native层运行。所以也会经常碰到如下的错误信息:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0088d410
04-02 13:24:50.701: I/DEBUG(3412): r0 4b89de00 r1 0088d410 r2 00000000 r3 00000000
04-02 13:24:50.701: I/DEBUG(3412): r4 00000000 r5 00000000 r6 00000020 r7 00000001
04-02 13:24:50.701: I/DEBUG(3412): r8 45a98b68 r9 458dbde0 10 0034f598 fp 440b0000
04-02 13:24:50.701: I/DEBUG(3412): ip 806091c8 sp 45a989d0 lr 80602a0c pc afd0d200 cpsr 60000010
d0 42a0000000000000 d1 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): d2 0000000042200000 d3 4220000042a00000
04-02 13:24:50.701: I/DEBUG(3412): d4 000000003df5c2a0 d5 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): d6 0000000000000101 d7 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): d8 3f8000003f800000 d9 8000000080000000
04-02 13:24:50.701: I/DEBUG(3412): d10 8000000080000000 d11 3ff0000080000000
04-02 13:24:50.701: I/DEBUG(3412): d12 3f8000003f800000 d13 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): d14 0000000000000000 d15 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): d16 000172c000000000 d17 7e37e43c8800759c
04-02 13:24:50.701: I/DEBUG(3412): d18 3fff8def8808b024 d19 465aa3f469f40e1c
04-02 13:24:50.701: I/DEBUG(3412): d20 4008000000000000 d21 3fd99a27ad32ddf5
04-02 13:24:50.701: I/DEBUG(3412): d22 3fd24998d6307188 d23 3fcc7288e957b53b
04-02 13:24:50.701: I/DEBUG(3412): d24 3fc74721cad6b0ed d25 3fc39a09d078c69f
04-02 13:24:50.701: I/DEBUG(3412): d26 0000000000000000 d27 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): d28 0000000000000000 d29 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): d30 0000000000000000 d31 0000000000000000
04-02 13:24:50.701: I/DEBUG(3412): scr 60000012
04-02 13:24:50.741: I/DEBUG(3412): #00 pc 0000d200 /system/lib/libc.so
04-02 13:24:50.741: I/DEBUG(3412): #01 pc 00002a08 /system/lib/libgsl.so
如果是初次遇到此种错误的话,自然会有种茫然不知所措的感觉啊。
对以上一坨堆栈信息来说说,我们只看signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0088d410一句就可以了。
Zygote抛出信号11,那就是说某个进程访问了被禁止访问的内存区域,可以通过DDMS查看一下到底在哪里内存访问越界了。
如果您正在使用opengl的话,记得opengl工作在independient线程,因此为了避免使用opengl出现这类问题就需要在构造函数。
- 相关文章
- Android NDK调用时Java 的类型与虚拟机中的表示对照表 (18人浏览)
- Android Application对象必须掌握的七点 (2人浏览)
- 不同Android版本之间旋转屏幕时禁止重新加载Activity的区别 (3人浏览)
- 手把手教你轻松解决Android模拟器无法上网的问题 (48人浏览)
- Android 4.1 Audio系统变化说明 (4人浏览)
- android StaticLayout参数解释 (53人浏览)
- Android添加onKeyLongPress事件 (26人浏览)
发表评论(0)