http://blog.csdn.net/gq414047080/article/details/9012691
关于如下debug无法看出究竟是哪出了问题。之前尝试各种方法,折腾了老半天都是没有结果。
F/libc ( 148): Fatal signal 11 (SIGSEGV) at 0x390955ae (code=1)
I/ProtocalService( 148): [service]SaveOrder type:1data1:734data2:47
I/protocal_service( 148): [jni]saveo_order 1 734 47
D/protocal_core( 148): [C]type 1 data1 734 data2 47
D/protocal_packet( 148): RCV ACK !
I/ProtocalService( 148): [service]SaveOrder type:1data1:737data2:53
I/protocal_service( 148): [jni]saveo_order 1 737 53
D/protocal_core( 148): [C]type 1 data1 737 data2 53
D/protocal_packet( 148): RCV ACK !
I/DEBUG ( 84): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 84): Build fingerprint: 'softwinners/crane_evb_v13/crane-evb-v13:4.0.4/IMM76D/20130530:eng/test-keys'
I/DEBUG ( 84): pid: 148, tid: 155 >>> system_server <<<
I/DEBUG ( 84): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 390955ae
I/DEBUG ( 84): r0 02de0100 r1 4e00002d r2 4e00004d r3 390955aa
I/DEBUG ( 84): r4 408a69c0 r5 408a69c8 r6 408a69c8 r7 00000020
I/DEBUG ( 84): r8 00001fa4 r9 5add5bfc 10 00001fb0 fp 00014c01
I/DEBUG ( 84): ip 00000000 sp 5add5b50 lr 4086b9bb pc 4086b840 cpsr 20000030
I/DEBUG ( 84): d0 0005010256edb101 d1 584556d647806e00
I/DEBUG ( 84): d2 1c2de0008008f200 d3 47806e704300e000
I/DEBUG ( 84): d4 a20fa108408cf8df d5 e00fe01aec1af7ca
I/DEBUG ( 84): d6 dc032900009cf8d7 d7 47b81c317070f8df
I/DEBUG ( 84): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 84): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 84): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 84): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 84): d16 0000000000000001 d17 991f1f1f991f1f1f
I/DEBUG ( 84): d18 0707070703030303 d19 0000000000000000
I/DEBUG ( 84): d20 0100010001000100 d21 0100010001000100
I/DEBUG ( 84): d22 0000000000000000 d23 0000000000000000
I/DEBUG ( 84): d24 0000000000000000 d25 0000000000000000
I/DEBUG ( 84): d26 0067006700670067 d27 0067006700670067
I/DEBUG ( 84): d28 0067006700670067 d29 0067006700670067
I/DEBUG ( 84): d30 0001000000010000 d31 0001000000010000
I/DEBUG ( 84): scr 20000012
I/DEBUG ( 84):
I/DEBUG ( 84): #00 pc 0007e840 /system/lib/libdvm.so (_Z14dvmCompilerNewjb)
I/DEBUG ( 84): #01 pc 0007e9b6 /system/lib/libdvm.so (_Z19dvmInitGrowableListP12GrowableListj)
I/DEBUG ( 84): #02 pc 0007ccf8 /system/lib/libdvm.so (_Z15dvmCompileTraceP19JitTraceDescriptioniP18JitTranslationInfoPA64_li)
I/DEBUG ( 84): #03 pc 0008632a /system/lib/libdvm.so (_Z17dvmCompilerDoWorkP17CompilerWorkOrder)
I/DEBUG ( 84): #04 pc 0007c6ae /system/lib/libdvm.so
I/DEBUG ( 84): #05 pc 0005f696 /system/lib/libdvm.so
I/DEBUG ( 84): #06 pc 00012c64 /system/lib/libc.so (__thread_entry)
I/DEBUG ( 84): #07 pc 000127b8 /system/lib/libc.so (pthread_create)
I/DEBUG ( 84):
I/DEBUG ( 84): code around pc:
I/DEBUG ( 84): 4086b820 78a4f641 4c274d26 bf284547 f8df46b8 A..x&M'LGE(..F..
I/DEBUG ( 84): 4086b830 447eb098 0a0cf108 447c447d 68339101 ..~D....}D|D..3h
I/DEBUG ( 84): 4086b840 68186859 4282187a 185cd80c 9b01605a Yh.hz..B..\.Z`..
I/DEBUG ( 84): 4086b850 b123340c 21004620 f79f463a 4620ed42 .4#. F.!:F..B. F
I/DEBUG ( 84): 4086b860 8ffee8bd b10b689b e7e86033 f79f4650 .....h..3`..PF..
I/DEBUG ( 84):
I/DEBUG ( 84): code around lr:
I/DEBUG ( 84): 4086b998 1c4868a3 7021f843 e8bd6060 bf0081f0 .hH.C.!p``......
I/DEBUG ( 84): 4086b9a8 23006001 6043b510 00884604 f7ff2101 .`.#..C`.F...!..
I/DEBUG ( 84): 4086b9b8 60a0ff2d bf00bd10 f641b510 f79f70b0 -..`......A..p..
I/DEBUG ( 84): 4086b9c8 4b0eec9e 4604447b b9406018 2006490c ...K{D.F.`@..I.
I/DEBUG ( 84): 4086b9d8 44794a0c f79f447a 4620ec74 4a0ae00c .JyDzD..t. F...J
I/DEBUG ( 84):
I/DEBUG ( 84):
解决方法:
1,一开始怀疑自己写的的代码,可上述debug根本没有打印出自己所增加的.so,怀疑系统其它地方存在bug
2,经过反复复制发现只有执行自己新加功能时才会宕机,原因锁定在自己的.so。
3,网上查资料说什么线程锁等等。。。
4,最后只好老老实实检查自己代码,发现有地方对buffer操作出现了越界(低级错误),在多次执行该地方后破坏内存数据导致奔溃。。。
----------------------------------------------------------------------
Fatal signal 11 (SIGSEGV)的问题
http://blog.sina.com.cn/s/blog_928574110101bjjj.html
新手搞起东西来果然很麻烦啊,面对陌生的东西,只有前进前进前进,没有退路,不由得感慨万千。。
上网上查Fatal signal 11 (SIGSEGV),直说是和内存有关,具体为什么真的不知道,而且是丈二的和尚摸不着头脑,除了这一句没有明显的提示了。我的程序时双库的调用,先上段代码吧,这都是赤裸裸的教训啊!!
int ThresholdProcess(BYTE Image[], BYTE ThresholdFlag[])
{
int i;
for(i = 0; i < ImageWidth*ImageHeight; i ++)
{
if(Image[i] > 40)
{
ThresholdFlag[i] = 255;
}
else
ThresholdFlag[i] = 0;
}
return 1;
}
从表面看来没有什么明显的错误,而且逻辑上都没有问题,数组越界就更使不肯能了,之前做的时候倒是碰到了数组越界的问题,但是这次绝对没有越界的事儿了。
灵机一动,不知怎地,就想到JNI接口中应该将传递进来的参数转换一下,否则无法赋值和调用,于是乎就试了下,一系列的 GetArrayLength,GetIntArrayElements后,将可以操作的数组作为参数传递进了函数内,果然是这个问题,给自己鼓下掌吧,帅呆了。
JNI调用函数为:
JNIEXPORT jint JNICALL Java_com_example_myapplication_MainActivity_test(JNIEnv *env, jobject thiz, jintArray Image, jintArray ThresholdFlag)
{
jint i;
LOGE("here");
jint length = (*env)->GetArrayLength(env, Image);
jint temp[length], tempthreshold[length];
jint* arr = (*env)->GetIntArrayElements(env, Image, NULL);
jint* threshold = (*env)->GetIntArrayElements(env, ThresholdFlag, NULL);
for(i = 0; i < length; i++)
{
temp[i] = arr[i];
tempthreshold[i] = threshold[i];
}
ThresholdProcess(temp, tempthreshold);
(*env)->SetIntArrayRegion(env,ThresholdFlag,0,length,tempthreshold);
return 1;
}
-----------------------------------------------------------------------------------
ndroid、Java开发相关:A/libc(28088): Fatal signal 11 (SIGSEGV) at 0x616f708c (code=1),
http://zhidao.baidu.com/link?url=HNoLn_9OigLaY6ULu037w7dQAnQ2VD4QJ-jNdZl_FijYJgjbMTUEQ5i-agXGgUBQbni1lpMjm3_IbQDZ0W6ZLa
09-02 11:15:25.775: A/libc(28088): Fatal signal 11 (SIGSEGV) at 0x616f708c (code=1), thread 28316 (jue.pd.activity)。。。我的Android程序中出现这个错误,求教一下,这个错是什么意思?如何避免或修改?
这个错误一般是出现了内存泄露问题,可以检查一下是否出现了野指针,或者某些线程或者实例是否及时关闭,谢谢
曾经遇到过这个问题,这个问题引起的原因太多了,我说下我的情况:
我的android程序调用到了一个.so的文件,文件中定义的资源列表是在.pak中。如果出现.pak和.so文件不匹配,或者代码中回调函数和.so的接口不匹配就会出现这个问题。
编译能通过,但是一运行就会出现这个错误。
最后是仔细检查了so中接口和java文件的回调函数,解决了。
-----------------------------------------------------------------------------------------------------
ICS libc Fatal signal 11 (SIGSEGV) at 0x00000000
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=206725&page=2#pid2809552
打啥别打脸 No.3 秀才开发者 发表于 2013-5-16 17:59:40 | 只看该作者
黑兔子也很萌 发表于 2013-5-13 10:33
没有……找不到究竟是哪里的资源没有释放掉,明明已经bMapManager.distroy又=null了,可到了下 ...
大神 你解决了么 求指导642169931
点评
黑兔子也很萌 没能成为大神真抱歉……没解决,最后只好换了低版本的百度地图API就不再纠结这个问题了…… 详情 回复 发表于 2013-5-17 09:58
举报
回复
黑兔子也很萌
1
主题
202
帖子
354
e币
加为好友 发送消息 访问博客
查看详细资料 [未绑定新浪微博]
[未绑定新浪微博]
* 个人资料
* 主题列表
* 发消息
17楼
黑兔子也很萌 No.4 中级开发者 发表于 2013-5-17 09:58:20 | 只看该作者
打啥别打脸 发表于 2013-5-16 17:59
大神 你解决了么 求指导642169931
没能成为大神真抱歉……没解决,最后只好换了低版本的百度地图API就不再纠结这个问题了……
举报
回复
红尘丶
7
主题
516
帖子
2006
e币
加为好友 发送消息 访问博客
查看详细资料 [红尘丶 的新浪微博]
* 个人资料
* 主题列表
* 发消息
18楼
红尘丶 No.5 砖家开发者 发表于 2013-5-31 11:01:01 | 只看该作者
也遇到这个问题了, 不知道怎么解决
举报
回复
beingx
主题
6
帖子
87
e币
加为好友 发送消息 访问博客
查看详细资料 [未绑定新浪微博]
[未绑定新浪微博]
* 个人资料
* 主题列表
* 发消息
19楼
beingx No.1 开发小菜鸟 发表于 2013-6-3 12:43:25 | 只看该作者
黑兔子也很萌 发表于 2013-5-7 16:06
有没有人 在用百度地图的时候出现这个问题啊……Fatal signal 11 (SIGSEGV) at 0x00647528 (code=1){:5_217 ...
我刚遇到这个问题了,就像你们讲的,是MapManager资源释放的问题,
我之间是这么写的,mBMapMan是从另一个方法中得来,我在这里把mBMapMan=null了,看起来是把mBMapMan销毁了,但下次获得时还是获得的之前的同一个MapManager,后来加一句把MyFactory中的MapManager也=null就ok了
总之我的问题是粗心大意了,给大家提个醒,看会不会是同样的问题,供参考
BMapManager mBMapMan = null;
mBMapMan = MyFactory.getInstance().getMapManager();
......
mBMapMan.destroy();
mBMapMan = null;
点评
ovjaywang 请问MyFacory是从哪里来的呢。好像Android包里面没有的样子啊?? 详情 回复 发表于 2013-6-10 03:12
举报
回复
brook19
14
主题
264
帖子
456
e币
加为好友 发送消息 访问博客
QQ 查看详细资料 [未绑定新浪微博]
[未绑定新浪微博]
* 个人资料
* 主题列表
* 发消息
20楼
brook19 No.5 砖家开发者 发表于 2013-6-5 11:42:06 | 只看该作者
黑兔子也很萌 发表于 2013-5-13 10:33
没有……找不到究竟是哪里的资源没有释放掉,明明已经bMapManager.distroy又=null了,可到了下 ...
我也在用百度地图的时候出现了这个问题,然后程序闪退
举报
回复
ovjaywang
主题
2
帖子
17
e币
加为好友 发送消息 访问博客
查看详细资料 [ovjaywang 的新浪微博]
* 个人资料
* 主题列表
* 发消息
21楼
ovjaywang No.1 开发小菜鸟 发表于 2013-6-10 03:12:49 | 只看该作者
beingx 发表于 2013-6-3 12:43
我刚遇到这个问题了,就像你们讲的,是MapManager资源释放的问题,
我之间是这么写的,mBMapMan是从另一 ...
请问MyFacory是从哪里来的呢。好像Android包里面没有的样子啊??
举报
回复
mypong
主题
258
帖子
778
e币
加为好友 发送消息 访问博客
查看详细资料 [未绑定新浪微博]
[未绑定新浪微博]
* 个人资料
* 主题列表
* 发消息
22楼
mypong No.4 中级开发者 发表于 2013-7-22 16:34:01 | 只看该作者
这个问题归结原因,最终就是有内存未释放,可是不只是哪一块内存未释放呀
举报
回复
qhy2013qhy
1
主题
286
帖子
1017
e币
加为好友 发送消息 访问博客
查看详细资料 [qhy2013qhy 的新浪微博]
* 个人资料
* 主题列表
* 发消息
23楼
qhy2013qhy No.4 中级开发者 发表于 2013-8-1 11:46:47 | 只看该作者
地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init, start, stop, destroy。
建议在Application里生成BMapManager对象并初使化,在程序退出时调用destory,
在需要使用sdk功能的activity的onCreate里调用start, onDestroy调用stop,
或者onResume/onPause分别调用start和stop。 若没有初始化BMapManager对象,会出现“
No implementation found for native Lcom/baidu/platform/comjni/tools/JNITools;.GetDistanceByMC (Ljava/lang/Object;)V”
“java.lang.UnsatisfiedLinkError: GetDistanceByMC”等错误。
举报
回复
qhy2013qhy
1
主题
286
帖子
1017
e币
加为好友 发送消息 访问博客
查看详细资料 [qhy2013qhy 的新浪微博]
* 个人资料
* 主题列表
* 发消息
24楼
qhy2013qhy No.4 中级开发者 发表于 2013-8-1 11:47:55 | 只看该作者
这是我遇到native Lcom/baidu/platform/comjni/tools/JNITools;.GetDistanceByMC (Ljava/lang/Object;)V”
“java.lang.UnsatisfiedLinkError: GetDistanceByMC找到的。。。
举报
回复
qhy2013qhy
1
主题
286
帖子
1017
e币
加为好友 发送消息 访问博客
查看详细资料 [qhy2013qhy 的新浪微博]
* 个人资料
* 主题列表
* 发消息
25楼
qhy2013qhy No.4 中级开发者 发表于 2013-8-1 11:48:35 | 只看该作者
百度地图SDK 2.1
举报
回复
meimei1987
10
主题
138
帖子
11
e币
加为好友 发送消息 访问博客
查看详细资料 [未绑定新浪微博]
[未绑定新浪微博]
* 个人资料
* 主题列表
* 发消息
26楼
meimei1987 No.3 秀才开发者 发表于 2013-10-29 09:59:30 | 只看该作者
楼主,我的APP里没有调用C代码,也没有使用malloc,但还是出现了这样的问题,这是怎么回事啊?
举报
回复
917862274
2
主题
102
帖子
241
e币
加为好友 发送消息 访问博客
QQ 查看详细资料 [未绑定新浪微博]
[未绑定新浪微博]
* 个人资料
* 主题列表
* 发消息
27楼
917862274 No.3 秀才开发者 发表于 2014-1-10 14:22:39 | 只看该作者
黑兔子也很萌 发表于 2013-5-13 10:33
没有……找不到究竟是哪里的资源没有释放掉,明明已经bMapManager.distroy又=null了,可到了下 ...
还真是这个问题,我把离线地图注释掉就ok 了
-------------------------------------------------------------------------------
Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)问题解决
http://blog.csdn.net/sonikk/article/details/9217181
异常出现频率:非必现,乍看不可捉摸。
BUG导致:应用程序崩溃,过一小会儿会自动退出。
Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
遇到这个问题很无奈,但是经过不断探索终于找到了问题的原因!!!
这个问题非常不给面子,居然在给上级演示程序的时候突然崩坏! 哭哭哭!!!NND看老子一会儿怎么治你!!!
这个是典型的多线程引起的问题,
我当时的应用场景是:
SurfaceView里面有一个Bitmap成员变量
而我们都知道SurfaceView里面的绘图方法是在一个新开的线程里面执行的,在这个绘图方法里,会执行把Bitmap绘制到Canvas上面的操作
当我点击一个按钮的时候,可能会改变Bitmap的引用,指向另外一张处理完成的图片,这个时候Bitmap这个成员变量会被我recycle(),释放掉。
问题就在这里了,我在recycle这个Bitmap的时候,也许Thread中正在执行把Bitmap绘制到Canvas上的操作,可能刚好正在执行当中,或者执行了一半,而GC毫不留情地把这个Bitmap请上了天堂,就这样,Java调用底层的API当中就突然发生了Error,因此这个问题才没有任何的Java异常提示。
解决问题的办法就是:
1. 在SurfaceView的按钮点击事件里用到Bitmap的地方改写代码:
[plain] view plaincopyprint?
1. Bitmap bmp = null;
2.
3. synchronized(mBmp)
4. {
5. bmp = mBmp;
6. mBmp = filter(bmp);
7. }
8.
9. // 释放
10. if(bmp.isRecycled() == false)
11. {
12. bmp.recycle();
13. bmp = null;
14. System.gc();
15. }
Bitmap bmp = null;
synchronized(mBmp)
{
bmp = mBmp;
mBmp = filter(bmp);
}
// 释放
if(bmp.isRecycled() == false)
{
bmp.recycle();
bmp = null;
System.gc();
}
2. 在SurfaceView的Thread当中改写代码:
[plain] view plaincopyprint?
1. synchronized(mBmp)
2. {
3. // ...
4. canvas.drawBitmap(mBmp, mMatrix, null);
5. }
synchronized(mBmp)
{
// ...
canvas.drawBitmap(mBmp, mMatrix, null);
}
OK!烦恼不再!啤酒一杯~
-----------------------------------------------------------------------
Android错误: 模拟器自动重启 - Fatal signal 11 (SIGSEGV) at 0x00000024
http://dreamisx.blog.163.com/blog/static/1150048392012111911393868/
这些天在Android 4.0下调试一个Android小程序时遇到AVD模拟器自动重启的错误,表现为在SurfaceView的OnTouch事件里调用另一个 Activity时,模拟器即自动重启,且屡试不爽。出现这个现象时,我试了直接用startActivity通过Intent直接启动另一 Activity,也试了在SurfaceView里发消息到Main Activity里再用startActivity启动另一Activity,都一样会出现自动重启的错误。但是,我在Android 2.3模拟器环境里测试,却又不会出现自动重启的问题!估计这是Android 4.0模拟器的一个bug。
仔细检查LogCat,发现有“Fatal signal 11 (SIGSEGV) at 0x00000024”这样的错误提示,网上查了都说是什么野指针引起的错误,似乎对我遇到的问题没有太大帮助,百思不得其解。
经过多次测试后,我发现只要调用另一个Activity时结束当前Activity里的线程就没问题了!我是在SurfaceView里用线程来画图的,只要确保SurfaceView的画图线程结束掉,那调用其他Activity就没事了。哈哈,解决方法就这么简单!
最后,又要发点牢骚:Android SDK的小Bug真多啊。
-----------------------------------------------------------------------------------