高翔slam project0.3出现double free or corruption (out)问题解决

问题

高翔slam project 0.3 在make的时候一切正常。但是在运行的时候会报错:double free or corruption (out)
在用gdb调试的时候,可以知道调试信息:

double free or corruption (out)

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51	../sysdeps/unix/sysv/linux/raise.c: 没有那个文件或目录.
(gdb) bt
#0  0x00007ffff57d9e97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff57db801 in __GI_abort () at abort.c:79
#2  0x00007ffff5824897 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff5951b9a "%s\n")
    at ../sysdeps/posix/libc_fatal.c:181
#3  0x00007ffff582b90a in malloc_printerr (str=str@entry=0x7ffff5953870 "double free or corruption (out)") at malloc.c:5350
#4  0x00007ffff5832e75 in _int_free (have_lock=0, p=0x555555821f10, av=0x7ffff5b86c40 <main_arena>) at malloc.c:4278
#5  0x00007ffff5832e75 in __GI___libc_free (mem=0x555555821f20) at malloc.c:3124
#6  0x00007ffff50ecc4d in g2o::EdgeProjectP2MC_Intrinsics::~EdgeProjectP2MC_Intrinsics() () at /usr/local/lib/libg2o_types_sba.so
#7  0x00007ffff557b1f7 in g2o::Factory::registerType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, g2o::AbstractHyperGraphElementCreator*) () at /usr/local/lib/libg2o_core.so
#8  0x00007ffff50e4b1a in _GLOBAL__sub_I_types_sba.cpp () at /usr/local/lib/libg2o_types_sba.so
#9  0x00007ffff7de5733 in call_init (env=0x7fffffffdc60, argv=0x7fffffffdc48, argc=2, l=<optimized out>) at dl-init.c:72
#10 0x00007ffff7de5733 in _dl_init (main_map=0x7ffff7ffe170, argc=2, argv=0x7fffffffdc48, env=0x7fffffffdc60) at dl-init.c:119
#11 0x00007ffff7dd60ca in _dl_start_user () at /lib64/ld-linux-x86-64.so.2
#12 0x0000000000000002 in  ()
#13 0x00007fffffffe01a in  ()
#14 0x00007fffffffe060 in  ()
#15 0x0000000000000000 in  ()

刚开始以为是g2o的问题,所以一直在搜索。

解决

就在高翔slam的gihub网址上看到了解决方案:link
set( CMAKE_CXX_FLAGS "-std=c++11 -march=native -O3" )改成set( CMAKE_CXX_FLAGS "-std=c++11 -O3" )
就删掉了一个-march=native然后重新编译,居然就可以运行了 。

资料查阅

可是据我所知-march=native应该是一个指定目标程序的cpu架构来进行程序优化。native就是相当于自检测cpu。总之-march是gcc优化选项。
具体参考:link

我查阅到gcc官网记录了这个bug:Bug c/70136
不过环境不一样,我的机器是:

Intel i7 6700k
ubuntu 18.04
gcc 5.5

具体原因后期再看,不过应该是环境的原因,和代码没关系。

5.6更新

貌似只要加了-march=native
所有的节点与边的析构函数都会报错。

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高翔SLAM14讲》是一本关于SLAM(Simultaneous Localization and Mapping)的经典教材。SLAM是一种在未知环境中实现机器人同时定位和地图构建的技术。这本书是作者高翔根据自己多年的研究和实践经验总结而成,对SLAM算法和应用进行了系统性的介绍和讲解。 《高翔SLAM14讲》总共有14讲,每一讲都涵盖了不同的主题和领域。从基础概念到算法实现,从视觉SLAM到激光SLAM,从前端感知到后端优化,全方位地介绍了SLAM领域的重要内容。每一讲都有相应的理论讲解、实例分析和代码实现,非常适合从事SLAM研究和开发的人员学习和参考。 《高翔SLAM14讲》着重强调了实际应用和工程实现。通过对现有算法的详细讲解和示例演示,读者可以更好地理解SLAM的原理和实践方法,并通过代码实现来加深对其应用的理解。无论是学术界的研究人员,还是工业界的工程师,都可以从中获得宝贵的经验和知识。 此外,这本书的语言通俗易懂,图文并茂,对于初学者来说也很友好。通过阅读《高翔SLAM14讲》,读者能够快速入门SLAM,并从中获得对于SLAM技术的深入了解。该书已经成为SLAM领域的经典教材,广泛被各高校和研究机构采用,并在业界赢得了良好的口碑。 综上所述,《高翔SLAM14讲》是一本值得阅读的SLAM相关教材。无论是对于SLAM感兴趣的初学者,还是SLAM领域的专业人士,都可以从中获取到丰富的知识和实践经验。阅读这本书,可以帮助读者掌握SLAM的核心概念、算法原理和实现方法,提升在SLAM领域的能力和水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值