android sources全局指导坐镇
https://source.android.com/devices/tech/debug/native-memory
一直没有实践native进程的内存泄漏问题的debug,网上也一直没找到有用的。直到遇到heapsnap,发现真是有用,至此一块心病也是解决了。再加上之前用asan来分析userspace的内存问题,可以说稳定性这块关于内存的算是有初步的把握了。后续就是需要对内核关于内存的优化有更多的学习和总结。
验证Android版本为P
1.用malloc debug发现内存非法使用问题
setprop libc.debug.malloc.options backtrace
setprop libc.debug.malloc.program vendor/bin/test
11-15 10:29:51.406 4573 4573 I malloc_debug: ./vendor/bin/test: Run: 'kill -47 4573' to dump the backtrace.
11-15 10:29:51.408 4573 4573 I libc : ./vendor/bin/test: malloc debug enabled
11-15 10:29:51.410 4573 4573 D : test main
11-15 10:29:51.410 4573 4573 D TEST : test begin1
11-15 10:29:51.410 4573 4573 D TEST : double free
11-15 10:29:51.410 4573 4573 E TEST : afte free test1: -1345756352
11-15 10:29:51.410 4573 4573 E TEST : afte free test2 99
11-15 10:29:51.410 4573 4573 E malloc_debug: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-15 10:29:51.410 4573 4573 E malloc_debug: +++ ALLOCATION 0xafc8c018 UNKNOWN POINTER (free)
11-15 10:29:51.410 4573 4573 E malloc_debug: Backtrace at time of failure:
11-15 10:29:51.410 4573 4573 E malloc_debug: #00 pc 00000d08 /vendor/lib/libtest.so (doTest()+71)
11-15 10:29:51.410 4573 4573 E malloc_debug: #01 pc 00088f54 /system/lib/libc.so (__libc_init+47)
11-15 10:29:51.410 4573 4573 E malloc_debug: #02 pc 00000ba2 /vendor/bin/test
11-15 10:29:51.411 4573 4573 E malloc_debug: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-15 10:29:51.411 4573 4573 E TEST : afte free 2 times
an.xi@droid01:/mnt/fileroot/an.xi/p$ addr2line -ife out/target/product/ampere/symbols/vendor/lib/libtest.so 00000d08
_Z6doTestv
vendor/amlogic/common/system/libtest/testlib.cpp:34
30 free (buf_);
31 ALOGE("afte free test1: %d\n",buf_->test1);
32 buf_->tes