slambook2 icon indicating copy to clipboard operation
slambook2 copied to clipboard

运行ch12 单目稠密建图的程序时出现段错误(核心已转储)

Open Tangyy12 opened this issue 3 years ago • 14 comments

运行如下: read total 202 files. *** loop 1 *** 段错误 (核心已转储) 用gdb调试以后定位如下: #0 0x0000555555559715 in epipolarSearch(cv::Mat const&, cv::Mat const&, Sophus::SE3<double, 0> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, double const&, double const&, Eigen::Matrix<double, 2, 1, 0, 2, 1>&, Eigen::Matrix<double, 2, 1, 0, 2, 1>&) () #1 0x000055555555afce in update(cv::Mat const&, cv::Mat const&, Sophus::SE3<double, 0> const&, cv::Mat&, cv::Mat&) () #2 0x0000555555558238 in main () 然后我就不知道该如何解决了 小白一枚,求大神指个明路!

Tangyy12 avatar Jun 09 '21 07:06 Tangyy12

我也遇到了,请问您解决了吗

MY-Lucy avatar Jun 30 '21 03:06 MY-Lucy

没有解决呢,暂时先放弃了,等后续回头再看看吧,如果你解决了,希望可以分享一下解决方案

------------------ 原始邮件 ------------------ 发件人: "gaoxiang12/slambook2" @.>; 发送时间: 2021年6月30日(星期三) 中午11:23 @.>; @.@.>; 主题: Re: [gaoxiang12/slambook2] 运行ch12 单目稠密建图的程序时出现段错误(核心已转储) (#178)

我也遇到了,请问您解决了吗

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

Tangyy12 avatar Jun 30 '21 15:06 Tangyy12

锁定问题的根源了

发现了一个奇怪的bug,大家可以试一试: 在update函数里面的nested for-loop把x和y的值打印出来,你会发现outer loop的值会超出范围,所以导致出错

yan99033 avatar Aug 19 '21 00:08 yan99033

update函数为定义为bool类型,但是没有返回值,可以改为void

sifanxian avatar Oct 26 '21 05:10 sifanxian

我也遇到这个问题,通过这种方式解决了,应该是代码优化问题 https://blog.csdn.net/u012858839/article/details/123850031

solidexu avatar Mar 31 '22 03:03 solidexu

上面的问题最终解决了吗? 小白坑求大佬帮忙解决一下,谢谢了。

xiangxuedao avatar Apr 13 '22 08:04 xiangxuedao

上面的问题最终解决了吗? 小白坑求大佬帮忙解决一下,谢谢了。

前面的兄弟是对的,把bool改称void就好了

c0y0h avatar Apr 19 '22 14:04 c0y0h

真的也,这个优化到底是什么鬼?把bool改成void真的就ok了,莫名其妙

ChenXinXuTUSC avatar Apr 25 '22 15:04 ChenXinXuTUSC

上面的问题最终解决了吗? 小白坑求大佬帮忙解决一下,谢谢了。

前面的兄弟是对的,把bool改称void就好了

就是因为缺少返回值,加上返回值,或者改为void都可以。 开O3优化后,好像缺少返回值会导致各种奇葩的错误,具体原因不懂。

suhangsong avatar Oct 09 '22 12:10 suhangsong

把CMakeLists.txt中的-O3优化去掉就可以了

leo-frank avatar Oct 12 '22 04:10 leo-frank

不用改代码,cmakelists里debug+ -O0就对了

WEEKQUEE avatar Oct 15 '22 03:10 WEEKQUEE

update函数为定义为bool类型,但是没有返回值,可以改为void

成功解决,感谢

HLkyss avatar Aug 15 '23 14:08 HLkyss

我加上“return true”就可以了

MichaelSun1001 avatar Sep 02 '23 01:09 MichaelSun1001

我加上“return true”就可以了

什么都不用更改,直接在相关函数地下加上“return true”就行了,祝好运

MichaelSun1001 avatar Sep 02 '23 03:09 MichaelSun1001

运行到最后为什么报这个错啊:

*** loop 201 *** terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr: __pos (which is 140) > this->size() (which is 0) 已放弃 (核心已转储)

icefrogplus avatar Oct 01 '24 08:10 icefrogplus