boost property_tree read_json coredump

项目中使用boost::property_tree::read_json引发coredump,几乎是稳定复现,而且每次core也基本都在同一个地方
在这里插入图片描述
但是,怎么看也不太像会出core的样子,所以就朝着内存写飞的方向排查了。搞了一上午的valgrind,最终还是报错
在这里插入图片描述
这个问题之前也遇到过,试了几次安装libc6-debug也没搞定。好吧,终于想起来请教大牛了,大牛反馈
这个不好搞;要hack valgrind的源码,改几个宏定义才能用;而且valgrind不好用,你用火焰图吧
大牛建议我使用jemalloc,并给了我几篇参考文档,但其实不是我想要的,我是想排查内存crash的问题,大牛建议我从gdb入手,便有了文章开头的直觉,怎么看也不像会有core的样子,而且还给大牛贴了core位置的代码。大牛提示:
我们之前遇到过一次json解析导致的core,查出来是我们的服务,同时用了rapidjson的so和静态链接的binary,然后两个版本不一致,导致core

于是,朝这个方向排查了一番,发现也没有这个问题,本地的so和最新的so也没有不一致。没辙了,死马当活马医吧,抱着试试看的态度google了一下,问题解决:
使用boost/property_tree/json_parser.hpp需要定义BOOST_SPIRIT_THREADSAFE宏。

程序是不会骗人的,多次core在同一个位置,基本就是这里有问题了,不妨搜一搜。虽然之前也遇到过,因为读了已经释放的内存导致core,人啊还是不能为经验所累。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值