我已經使用最新的Android NDK附帶的新native_app_glue代碼完全在C中編寫了一個Android應用程序。除了一件奇怪的事情之外,它一切正常。當我關閉我的應用程序並重新啓動時,我的.so共享對象崩潰了。我使用addr2line來查找崩潰的函數,但它沒有任何意義,因爲它總是一個不同的函數導致崩潰,當然,它也是第一次運行正常。所以它一定是別的。我的Android應用程序奇怪的崩潰
有沒有人有一個想法可能會導致這種行爲?正如我所說的,行爲是這樣的:
1)第一次開始 - >應用始終正常工作 2)第二次啓動 - >應用程序崩潰 3)第三次開始 - >程序再次工作正常 4)第四次啓動 - >應用程序再次崩潰 5)第五次啓動 - >再次正常工作 6)第六次 - >崩潰 等等等等。
我不知道那裏有什麼問題。也許我的應用沒有正確關閉?但我得到並處理兩個術語消息(APP_CMD_TERM_WINDOW和APP_CMD_DESTROY)。我真的沒有線索有什麼不對...
感謝您的幫助!
編輯:這裏的崩潰日誌:
I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 31): Build fingerprint: 'generic/sdk/generic:2.3.1/GSI11/93351:eng/test-keys'
I/DEBUG ( 31): pid: 1105, tid: 1114 >>> com.example.testapp <<<
I/DEBUG ( 31): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000058
I/DEBUG ( 31): r0 8382746d r1 00000000 r2 00000058 r3 00000058
I/DEBUG ( 31): r4 00000000 r5 8382746d r6 00242920 r7 00000554
I/DEBUG ( 31): r8 00245150 r9 001ec8e0 10 839651dc fp 00000000
I/DEBUG ( 31): ip 839654e0 sp 435fc2b0 lr 8381c78f pc 83861858 cpsr 00000030
I/DEBUG ( 31): #00 pc 00061858 /data/data/com.example.testapp/lib/libtestapp.so
I/DEBUG ( 31): #01 pc 0001c78a /data/data/com.example.testapp/lib/libtestapp.so
I/DEBUG ( 31): #02 pc 0001d7d4 /data/data/com.example.testapp/lib/libtestapp.so
I/DEBUG ( 31): #03 pc 000ab1fa /data/data/com.example.testapp/lib/libtestapp.so
I/DEBUG ( 31): #04 pc 000fc9e2 /data/data/com.example.testapp/lib/libtestapp.so
I/DEBUG ( 31): #05 pc 00011a7c /system/lib/libc.so
I/DEBUG ( 31): #06 pc 00011640 /system/lib/libc.so
你可以發佈代碼片段與logcat – Sumant 2011-06-04 15:53:17
@Sumant:在這裏你去 – andy 2011-06-04 16:40:40
最有可能你正在使用靜態的方式應該是非靜態的東西(即掛在它的過程上下文),和當您不恰當地重新使用它時,在重新使用現有進程的重新啓動過程中,您會嘗試訪問不再有效的東西而崩潰。 – 2012-06-27 20:19:30