2014年11月22日 星期六

Cocos2d-x NDK 堆疊追蹤

又收到了堆疊追蹤以及使用者訊息的熱情回應(疑?不是痛駡嗎?)
堆疊追蹤如下:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/hlltezt/hllte:4.3/JSS15J/N7507ZTUANJ1:user/release-keys'
Revision: '10'
pid: 29894, tid: 29908, name: Thread-3236 >>> chad.game.mahjongtycoon <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
Abort message: 'stack corruption detected'
r0 00000027 r1 00000000 r2 00000008 r3 deadbaad
r4 00000000 r5 5fcc0544 r6 6371322c r7 63712920
r8 5fcc0c6c r9 5bdf1f00 sl 5bd97a98 fp 5fcc0c84
ip 00000001 sp 5fcc0540 lr 4004d3f7 pc 4004a930 cpsr 600a0030
d0 6f63206b63617473 d1 6e6f697470757272
d2 3fe62e4300000000 d3 3e335cbaa3698400
d4 3fe62e42fefa39ef d5 3f2a7a71c7316a74
d6 3f8d24a15045f000 d7 00000000ba4befdc
d8 0000000000000000 d9 0000000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 3f903ab3ef110182 d17 3f2a8a8f10be2c73
d18 3e66376972bea4d0 d19 be205c610ca86c39
d20 3e2a817ff707bd4a d21 bec5090c00000000
d22 bf66c164e61cb166 d23 3f903ab3ef110182
d24 3fc555509d6ae6af d25 bf8d59f78880c128
d26 bf1aaae71a68a5df d27 bfffc5da1fed000f
d28 bf1aaae71a68a5cf d29 3f8d12f0097ff874
d30 3ff0000000000000 d31 3e2a817ff7000000
scr 80000010

backtrace:
#00 pc 0001e930 /system/lib/libc.so
#01 pc 0001c944 /system/lib/libc.so (abort+4)
#02 pc 00012325 /system/lib/libc.so
#03 pc 000117ff /system/lib/libc.so (__stack_chk_fail+6)
#04 pc 00207691 /data/app-lib/chad.game.mahjongtycoon-1/libcocos2dcpp.so (TableLayout::CalculateWinScore(unsigned char)+276)

code around pc:
4004a910 461ce00b 2b006823 e026d1fb b12468e4 
4004a920 21014a18 6011447a 4b1247a0 24002027 
4004a930 f7fc7018 2106ed3c e88ef7fe 5180f04f 
4004a940 94022006 91049403 460aa902 eb3ef7fd 
4004a950 46224629 f7fd2002 f7fceb4a 2106ed28 
4004a960 e87af7fe f7fc2001 6960e9d4 d1dc2800 
4004a970 bf00e7d4 deadbaad 000296e2 ffffff9c 
4004a980 0002c978 0002c95c b088b510 46692400 
4004a990 aa049002 94014620 94039400 ea8cf7fd 
4004a9a0 db0642a0 b1139b07 1c419806 98069106 
4004a9b0 4620e000 bd10b008 4b1eb40e b5f0491e 
4004a9c0 af00b082 f107447b 585e021c f8522101 
4004a9d0 68354b04 f852607d 31015b04 d1fa2d00 
4004a9e0 320e008a 0507f022 0220f107 0d05ebad 
4004a9f0 4669603a 0224f107 9400466d 4c04f852 
4004aa00 f8453204 2c004f04 f8dfd1f8 f853c030 

code around lr:
4004d3d4 4a0e4b0d 41f0e92d 26004680 589c447b 
4004d3e4 686768a5 f9b5e007 2b00300c 4628dd02 
4004d3f4 430647c0 3f013554 6824d5f5 d1ef2c00 
4004d404 e8bd4630 bf0081f0 00026bf4 ffffffc4 
4004d414 43f0e92d 4b16461e fb01b087 460ff502 
4004d424 46144914 aa019001 95022001 9203447b 
4004d434 90049505 681a585b b1124698 f0094630 
4004d444 4630fd18 f7ffa903 4681fe9c 0000f8d8 
4004d454 4630b110 fd1af009 0f00f1b9 9c05d003 
4004d464 fbb11b29 4620f4f7 e8bdb007 bf0083f0 
4004d474 00026ba4 ffffff60 46036842 29001e51 
4004d484 da016041 bbbaf000 f8126802 601a0b01 
4004d494 00004770 4a104b0f 4604b570 589b447b 
4004d4a4 461e6819 f009b109 6860fce4 2d001e45 
4004d4b4 da046065 f0004620 4605fba1 6822e003 
4004d4c4 5b01f812 68336022 4620b113 fcdef009

這不容易查,需要做個轉換(每個人開發環境不同,要自行變通一下)
1.將上頭的訊息copy到android-ndk-r9d下存成a.txt
2.到android-ndk-r9d目錄
3.執行
./ndk-stack -sym 你的專案目錄/proj.android/obj/local/armeabi -dump a.txt > b.txt

這裡要注意armeabi目錄,若當初是編出x86要改掉

4.得到b.txt如下:
********** Crash dump: **********
Build fingerprint: 'samsung/hlltezt/hllte:4.3/JSS15J/N7507ZTUANJ1:user/release-keys'
pid: 29894, tid: 29908, name: Thread-3236 >>> chad.game.mahjongtycoon <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
Stack frame #00 pc 0001e930 /system/lib/libc.so
Stack frame #01 pc 0001c944 /system/lib/libc.so (abort+4)
Stack frame #02 pc 00012325 /system/lib/libc.so
Stack frame #03 pc 000117ff /system/lib/libc.so (__stack_chk_fail+6)
Stack frame #04 pc 00207691 /data/app-lib/chad.game.mahjongtycoon-1/libcocos2dcpp.so (TableLayout::CalculateWinScore(unsigned char)+276): Routine TableLayout::CalculateWinScore(unsigned char) at /media/windows/xpdata/androidwork/MahjongTycoon/proj.android/jni/../../Classes/TableLayout.cpp:2052

唔,這樣查起來比較就比較有線索了。