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真多啊。
-----------------------------------------------------------------------------------