关于如下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操作出现了越界(低级错误),在多次执行该地方后破坏内存数据导致奔溃。。。