1

私はlogcatのデバッグが初めてなので、ご容赦ください。

共有ライブラリにある私の Android アプリ SIGSEGV。Logcatは私にこれを教えてくれます:

04-24 05:36:53.781: D/dalvikvm(1945): threadid=1: still suspended after undo (sc=1 dc=1)
04-24 05:37:00.066: A/libc(1945): Fatal signal 11 (SIGSEGV) at 0x00001a85 (code=1)
04-24 05:37:00.476: I/DEBUG(58): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
04-24 05:37:00.476: I/DEBUG(58): Build fingerprint: 'Android/full_mini210/mini210:4.0.3/IML74K/eng.root.20120209.191511:eng/test-keys'
04-24 05:37:00.476: I/DEBUG(58): pid: 1945, tid: 1945  >>> tiny.test2 <<<
04-24 05:37:00.476: I/DEBUG(58): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00001a85
04-24 05:37:00.476: I/DEBUG(58):  r0 f6502688  r1 00000000  r2 f6502688  r3 00001a85
04-24 05:37:00.476: I/DEBUG(58):  r4 00003000  r5 00000000  r6 00000039  r7 00000000
04-24 05:37:00.476: I/DEBUG(58):  r8 bec795d8  r9 4b965be8  10 503cd2c1  fp bec795ec
04-24 05:37:00.476: I/DEBUG(58):  ip fffffe68  sp bec79540  lr 40807077  pc 50408a56  cpsr 20000030
04-24 05:37:00.476: I/DEBUG(58):  d0  474957535f5f746e  d1  4e4a6874656e615f
04-24 05:37:00.476: I/DEBUG(58):  d2  4b9671984b967143  d3  4b9672084b967161
04-24 05:37:00.476: I/DEBUG(58):  d4  4b6fa8b92a41c200  d5  0012da7a0012da7a
04-24 05:37:00.476: I/DEBUG(58):  d6  001933a8033f33c4  d7  0000008d001933a8
04-24 05:37:00.476: I/DEBUG(58):  d8  0000000000000000  d9  0000000000000000
04-24 05:37:00.476: I/DEBUG(58):  d10 0000000000000000  d11 0000000000000000
04-24 05:37:00.476: I/DEBUG(58):  d12 0000000000000000  d13 0000000000000000
04-24 05:37:00.476: I/DEBUG(58):  d14 0000000000000000  d15 0000000000000000
04-24 05:37:00.476: I/DEBUG(58):  d16 00000000412adc78  d17 0000000000000000
04-24 05:37:00.476: I/DEBUG(58):  d18 4146605000000000  d19 bfb1be5a93a83e1d
04-24 05:37:00.476: I/DEBUG(58):  d20 3f1155e54e7e8408  d21 bebbbc6c1a570a20
04-24 05:37:00.476: I/DEBUG(58):  d22 3ff0000000000000  d23 3fede16b9c24a98f
04-24 05:37:00.476: I/DEBUG(58):  d24 3e66376972bea4d0  d25 3fc39a09d078c69f
04-24 05:37:00.476: I/DEBUG(58):  d26 0000000000000000  d27 0000000000000000
04-24 05:37:00.476: I/DEBUG(58):  d28 0000000000000000  d29 0000000000000000
04-24 05:37:00.476: I/DEBUG(58):  d30 0000000000000000  d31 0000000000000000
04-24 05:37:00.480: I/DEBUG(58):  scr 60000012
04-24 05:37:00.558: I/DEBUG(58):          #00  pc 50408a56  /data/data/tiny.test2/lib/libcaneth.so
04-24 05:37:00.558: I/DEBUG(58):          #01  lr 40807077  /system/lib/libdvm.so
04-24 05:37:00.558: I/DEBUG(58): code around pc:
04-24 05:37:00.558: I/DEBUG(58): 50408a34 9317681b 2b009b17 9a09d10a 447b4b26  .h.....+....&K{D
04-24 05:37:00.558: I/DEBUG(58): 50408a44 21071c10 f7fd1c1a 2300feed e0382400  ...!.......#.$8.
04-24 05:37:00.558: I/DEBUG(58): 50408a54 681b9b17 23009318 23f0930f 1c18005b  ...h...#...#[...
04-24 05:37:00.558: I/DEBUG(58): 50408a64 ee7cf02a 1c1d1c03 991b1c28 9b0a9a1a  *.|.....(.......
04-24 05:37:00.558: I/DEBUG(58): 50408a74 93009c0b 9b199401 9b189302 9b0f9303  ................
04-24 05:37:00.558: I/DEBUG(58): code around lr:
04-24 05:37:00.558: I/DEBUG(58): 40807054 fd94f7ff 686a4604 46314628 f8d24643  .....Fjh(F1FCF..
04-24 05:37:00.562: I/DEBUG(58): 40807064 46227300 4a0847b8 2100a805 f7fc447a  .s"F.G.J...!zD..
04-24 05:37:00.562: I/DEBUG(58): 40807074 b00afb29 81f0e8bd d5aab57f 00062cfa  )............,..
04-24 05:37:00.562: I/DEBUG(58): 40807084 0004c02e 0006ad96 0004bcd4 41f0e92d  ............-..A
04-24 05:37:00.562: I/DEBUG(58): 40807094 b08a4698 46054b1e 4614af05 447b460e  .F...K.F...F.F{D
04-24 05:37:00.562: I/DEBUG(58): memory map around addr 00001a85:
04-24 05:37:00.562: I/DEBUG(58): (no map below)
04-24 05:37:00.562: I/DEBUG(58): (no map for address)
04-24 05:37:00.562: I/DEBUG(58): 00008000-0000a000 /system/bin/app_process
04-24 05:37:00.562: I/DEBUG(58): stack:
04-24 05:37:00.562: I/DEBUG(58):     bec79500  40869d12  /system/lib/libdvm.so
04-24 05:37:00.562: I/DEBUG(58):     bec79504  00000004  
04-24 05:37:00.562: I/DEBUG(58):     bec79508  00000001  
04-24 05:37:00.562: I/DEBUG(58):     bec7950c  0000f2c8  [heap]
04-24 05:37:00.562: I/DEBUG(58):     bec79510  40806ffd  /system/lib/libdvm.so
04-24 05:37:00.562: I/DEBUG(58):     bec79514  00000000  
04-24 05:37:00.562: I/DEBUG(58):     bec79518  00000039  
04-24 05:37:00.562: I/DEBUG(58):     bec7951c  00000000  
04-24 05:37:00.562: I/DEBUG(58):     bec79520  bec795d8  [stack]
04-24 05:37:00.562: I/DEBUG(58):     bec79524  50406825  /data/data/tiny.test2/lib/libcaneth.so
04-24 05:37:00.562: I/DEBUG(58):     bec79528  00000000  
04-24 05:37:00.562: I/DEBUG(58):     bec7952c  412adc88  /dev/ashmem/dalvik-heap (deleted)
04-24 05:37:00.562: I/DEBUG(58):     bec79530  84400029  
04-24 05:37:00.562: I/DEBUG(58):     bec79534  0000f2c8  [heap]
04-24 05:37:00.566: I/DEBUG(58):     bec79538  df0027ad  
04-24 05:37:00.566: I/DEBUG(58):     bec7953c  00000000  
04-24 05:37:00.566: I/DEBUG(58):     bec79540  00132110  [heap]
04-24 05:37:00.566: I/DEBUG(58):     bec79544  00000000  
04-24 05:37:00.566: I/DEBUG(58):     bec79548  bec795e0  [stack]
04-24 05:37:00.566: I/DEBUG(58):     bec7954c  4b969480  /dev/ashmem/dalvik-LinearAlloc (deleted)
04-24 05:37:00.566: I/DEBUG(58):     bec79550  001a2530  [heap]
04-24 05:37:00.566: I/DEBUG(58):     bec79554  40019ea3  /system/lib/libc.so
04-24 05:37:00.566: I/DEBUG(58):     bec79558  000017c0  
04-24 05:37:00.566: I/DEBUG(58):     bec7955c  6b60001d  
04-24 05:37:00.566: I/DEBUG(58):     bec79560  6bd00019  
04-24 05:37:00.566: I/DEBUG(58):     bec79564  0000f2c8  [heap]
04-24 05:37:00.566: I/DEBUG(58):     bec79568  00003039  
04-24 05:37:00.566: I/DEBUG(58):     bec7956c  00000000  
04-24 05:37:00.566: I/DEBUG(58):     bec79570  00000000  
04-24 05:37:00.566: I/DEBUG(58):     bec79574  00000000  
04-24 05:37:00.566: I/DEBUG(58):     bec79578  409c5460  /dev/ashmem/dalvik-heap (deleted)
04-24 05:37:00.566: I/DEBUG(58):     bec7957c  000000c1  
04-24 05:37:00.566: I/DEBUG(58):     bec79580  00000002  
04-24 05:37:00.566: I/DEBUG(58):     bec79584  00000002  
04-24 05:37:00.566: I/DEBUG(58):     bec79588  412adc88  /dev/ashmem/dalvik-heap (deleted)
04-24 05:37:00.566: I/DEBUG(58):     bec7958c  84400029  
04-24 05:37:00.566: I/DEBUG(58):     bec79590  4bab3d70  /dev/ashmem/dalvik-LinearAlloc (deleted)
04-24 05:37:00.566: I/DEBUG(58):     bec79594  a6200025  
04-24 05:37:00.566: I/DEBUG(58):     bec79598  00000000  
04-24 05:37:00.570: I/DEBUG(58):     bec7959c  00001a85  
04-24 05:37:00.570: I/DEBUG(58):     bec795a0  40876c58  /system/lib/libdvm.so
04-24 05:37:00.570: I/DEBUG(58):     bec795a4  00000001  
04-24 05:37:00.570: I/DEBUG(58):     bec795a8  000017c0  
04-24 05:37:00.570: I/DEBUG(58):     bec795ac  00132248  [heap]
04-24 05:37:00.570: I/DEBUG(58):     bec795b0  00000000  
04-24 05:37:00.570: I/DEBUG(58):     bec795b4  4bbf5e70  /dev/ashmem/dalvik-LinearAlloc (deleted)
04-24 05:37:00.570: I/DEBUG(58):     bec795b8  00012830  [heap]
04-24 05:37:00.570: I/DEBUG(58):     bec795bc  00000003  
04-24 05:37:00.570: I/DEBUG(58):     bec795c0  4b965c00  
04-24 05:37:00.570: I/DEBUG(58):     bec795c4  407ddbf4  /system/lib/libdvm.so
04-24 05:37:00.570: I/DEBUG(58):     bec795c8  79200021  
04-24 05:37:00.570: I/DEBUG(58):     bec795cc  00000001  
04-24 05:37:00.570: I/DEBUG(58):     bec795d0  00001a85  
04-24 05:37:00.570: I/DEBUG(58):     bec795d4  00000000  
04-24 05:37:00.570: I/DEBUG(58):     bec795d8  4b965be8  
04-24 05:37:00.570: I/DEBUG(58):     bec795dc  00000001  
04-24 05:37:00.570: I/DEBUG(58):     bec795e0  412aca10  /dev/ashmem/dalvik-heap (deleted)
04-24 05:37:00.570: I/DEBUG(58):     bec795e4  00012840  [heap]
04-24 05:37:00.570: I/DEBUG(58):     bec795e8  bec79898  [stack]
04-24 05:37:00.570: I/DEBUG(58):     bec795ec  40817c33  /system/lib/libdvm.so
04-24 05:37:00.570: I/DEBUG(58):     bec795f0  4b965be8  
04-24 05:37:00.570: I/DEBUG(58):     bec795f4  503cd2bb  /data/dalvik-cache/data@app@tiny.test2-1.apk@classes.dex
04-24 05:37:00.570: I/DEBUG(58):     bec795f8  50408909  /data/data/tiny.test2/lib/libcaneth.so
04-24 05:37:00.570: I/DEBUG(58):     bec795fc  00012840  [heap]
04-24 05:37:00.570: I/DEBUG(58):     bec79600  00000008  
04-24 05:37:00.570: I/DEBUG(58):     bec79604  00000000  
04-24 05:37:00.570: I/DEBUG(58):     bec79608  6bd00019  
04-24 05:37:00.574: I/DEBUG(58):     bec7960c  4c1f228a  /data/dalvik-cache/system@framework@core.jar@classes.dex
04-24 05:37:00.574: I/DEBUG(58):     bec79610  fffffe4c  
04-24 05:37:00.574: I/DEBUG(58):     bec79614  f6502688  
04-24 05:37:00.574: I/DEBUG(58):     bec79618  4bb9da38  /dev/ashmem/dalvik-LinearAlloc (deleted)
04-24 05:37:00.574: I/DEBUG(58):     bec7961c  00000000  
04-24 05:37:00.574: I/DEBUG(58):     bec79620  00000000  
04-24 05:37:00.574: I/DEBUG(58):     bec79624  00000000  
04-24 05:37:00.574: I/DEBUG(58):     bec79628  00000000  
04-24 05:37:00.574: I/DEBUG(58):     bec7962c  00000000  
04-24 05:37:00.574: I/DEBUG(58):     bec79630  00156cae  [heap]
04-24 05:37:00.574: I/DEBUG(58):     bec79634  00156c98  [heap]
04-24 05:37:00.574: I/DEBUG(58):     bec79638  4004c4d8  
04-24 05:37:00.574: I/DEBUG(58):     bec7963c  4004c4d8  
04-24 05:37:00.574: I/DEBUG(58):     bec79640  00161678  [heap]
04-24 05:37:00.574: I/DEBUG(58):     bec79644  001616b0  [heap]
04-24 05:37:00.699: W/ActivityManager(189): Launch timeout has expired, giving up wake lock!
04-24 05:37:00.804: W/ActivityManager(189): Activity idle timeout for ActivityRecord{41571d28 tiny.test2/.Test2Activity}

これを ndk-stack で実行すると、

********** Crash dump: **********
Build fingerprint: 'Android/full_mini210/mini210:4.0.3/IML74K/eng.root.20120209.191511:eng/test-keys'
pid: 1945, tid: 1945  >>> tiny.test2 <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00001a85
Stack frame #00  pc 50408a56  /data/data/tiny.test2/lib/libcaneth.so: Unable to locate routine information for address 50408a56 in module ./obj/local/armeabi/libcaneth.so

50408a56、または 408a56、または 8a56 の addr2line が返されます??(addr2line にはオフセット アドレスが必要であることを読んだので、番号を変更しました)。また、スタック上の libcaneth.so による最後のアドレス 50406825 も試しました。

readelf から、最も近いアドレスは dynsyms にあると言われたので、dynsyms の内容をエクスポートしようとしましたが、アドレス情報がありません。

ndk-gdb は SIGSEGV の同じ PC アドレスを教えてくれましたが、関数名や行番号も見つかりませんでした。識別された関数ラベルがないことを考えると、クラス変数の初期化に問題があることを示唆していますか? どうすれば断層線を見つけることができますか? 私は何を間違っているのでしょうか?

4

1 に答える 1

1

デバッグ シンボルをコンパイルしてリンクしていますか

LOCAL_CFLAGS +=-g

LOCAL_LDLIBS :=-g

于 2012-06-09T23:41:59.517 に答える