delete指针时coredump的分析之旅

这篇博客记录了一次在删除指针时遇到的罕见crash问题的分析过程。作者首先排除了指针重复释放和多线程内存同步问题,然后通过堆栈信息确定不是操作系统问题。通过对内存数据的观察,发现在析构函数执行期间发生了越界写,导致new分配的内存保护数据被破坏,从而在delete时触发异常并crash。最后,作者强调了解问题的重要性,以及不要轻易怀疑成熟库和操作系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    很诡异,竟然在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
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值