很诡异,竟然在delete 指针时候crash,这个很少见~~~分析这个问题费了不少周折,记录在此。如能帮助到他人,不胜开心。
拿到的运行时候堆栈包含如下部分:
.......
Back chain word : 183831f8
b930a150 [1003a150],CXC1734416%2_R1E ??:0 heap_free
Back chain word : 18383208
b92ff0dc [1002f0dc],CXC1734416%2_R1E ??:0 free
Back chain word : 18383218
ba161414 [10e91414],CXC1734416%2_R1E ??:0 operator delete
开始以为是对指针重复释放,代码走读后发现排除此种可能。然后怀疑多线程内存同步有问题,后排除。
有同事怀疑是OS的问题,不过一般我不会怀疑OS的,比较OS一般都是很稳定的,而且这次OS没有重大升级。为了排除这种可能,还是解码了一下堆栈的顶部信息
注:下面的信息其实是在 heap_free之上,所以同事怀疑是OS问题
Stacktrace :
Using stackpointer : 0041b9cc
Back chain word : 097873b0
008136d8 [008136d8],CXC1729957_R81B13 ??:0 Cs_reportUnexpectedSignal_v
Back chain word : 097873f0
00828ac0 [00828ac0],CXC1729957_R81B13 /vobs/cello/cls_src/CLS_CRX90145_1/ERROR-MANAGER_CNX9011053_2/src/swu/error/error_handler.c:768 eman_install_appl_exten
Back chain word : 09787408
009d9f10 [009d9f10],CXC1729957_R81B13 ??:0 splaycmp_hunt_from
Back chain word : 09787448