Segmentation fault
yuyu-shi opened this issue · comments
Yuyu commented
When I approx Hessian with limited-memory, a segment error occurs and when I turn off limited-memory, the program works fine.
Ipopt version: 3.14.4
the logs in gdb is as follow:
Thread 1 "pnd_node" received signal SIGSEGV, Segmentation fault.
dpotrf_ (uplo=<optimized out>, _n=<optimized out>, a=0x555555832010, _lda=<optimized out>, info=0x7fffffffc464) at /builds/infra/trunk_third-parties/qpoases/src/LAPACKReplacement.cpp:67
67 /builds/infra/trunk_third-parties/qpoases/src/LAPACKReplacement.cpp: 没有那个文件或目录.
(gdb) where
#0 dpotrf_ (uplo=<optimized out>, _n=<optimized out>, a=0x555555832010, _lda=<optimized out>, info=0x7fffffffc464) at /builds/infra/trunk_third-parties/qpoases/src/LAPACKReplacement.cpp:67
#1 0x00007ffff6853cde in Ipopt::IpLapackPotrf(int, double*, int, int&) () from /lib/libipopt.so.3
#2 0x00007ffff6849e21 in Ipopt::DenseGenMatrix::ComputeCholeskyFactor(Ipopt::DenseSymMatrix const&) () from /lib/libipopt.so.3
#3 0x00007ffff68e2f83 in Ipopt::LimMemQuasiNewtonUpdater::UpdateHessian() () from /lib/libipopt.so.3
#4 0x00007ffff68a7ba5 in Ipopt::IpoptAlgorithm::Optimize(bool) () from /lib/libipopt.so.3
#5 0x00007ffff696c8ec in Ipopt::IpoptApplication::call_optimize() () from /lib/libipopt.so.3
#6 0x00007ffff696ec98 in Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&, Ipopt::SmartPtr<Ipopt::AlgorithmBuilder>&) () from /lib/libipopt.so.3
#7 0x00007ffff69675ad in Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&) () from /lib/libipopt.so.3
#8 0x00007ffff696946e in Ipopt::IpoptApplication::OptimizeTNLP(Ipopt::SmartPtr<Ipopt::TNLP> const&) () from /lib/libipopt.so.3
#9 0x00007ffff7820808 in trunk::pnd::smoother::CosThetaSmoother::Smooth (this=0x555555798250, frame=std::shared_ptr<trunk::pnd::port::Frame> (use count 1, weak count 0) = {...}, reference_line=0x5555557741b8)
at /home/trunk/code/trunk_pnd/src/reference_line_smooth/cos_theta_smoother/cos_theta_smoother.cc:60
#10 0x00007ffff7844bd8 in trunk::pnd::smoother::Smoother::SmoothAndCalRunTime (this=0x555555798250, frame=std::shared_ptr<trunk::pnd::port::Frame> (use count 1, weak count 0) = {...},
reference_line_info=0x5555557740d0) at /home/trunk/code/trunk_pnd/src/reference_line_smooth/smoother.cc:31
#11 0x00007ffff779e55a in trunk::pnd::Planning::RunOnce (this=0x555555790f20, frame=std::shared_ptr<trunk::pnd::port::Frame> (use count 1, weak count 0) = {...}) at /home/trunk/code/trunk_pnd/src/planning.cc:48
#12 0x000055555560f360 in trunk::Processor::Process (this=0x555555799ce0) at /var/trunk/TrunkPilot/db/src/tad_soc_release/src/processor.cc:33
#13 0x00005555555f3182 in trunk::Node::Run (this=0x555555781920) at /var/trunk/TrunkPilot/db/src/tad_soc_release/src/node.cc:109
#14 0x00005555555dbaf6 in main (argc=1, argv=0x7fffffffd878) at /var/trunk/TrunkPilot/db/src/tad_soc_release/src/main.cc:11
Stefan Vigerske commented
Might be a problem with the Lapack integer type in qpOASES being long
, while Ipopt probably expects int
.
You'll have to debug this a bit more, as we cannot reproduce.