<div dir="ltr"><div><div><div><div>Hello experts</div><div><br></div><div>I have used the C API of Ipopt 3.13.2 in my work with success. However, today, I got a segmentation fault error while I was solving a linear optimization problem with Ipopt. I have checked with Valgring and got the following:</div><div><br></div><div><br></div><div>==13696== Invalid read of size 8<br>==13696==    at 0x470FA0: std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >::operator[](unsigned long) const (stl_vector.h:816)<br>==13696==    by 0x47124A: Ipopt::CompoundVector::IsCompNull(int) const (IpCompoundVector.hpp:90)<br>==13696==    by 0x47159B: Ipopt::IteratesVector::GetIterateFromComp(int) const (IpIteratesVector.hpp:637)<br>==13696==    by 0xBBAAFC9: Ipopt::IteratesVector::z_L() const (IpIteratesVector.hpp:276)<br>==13696==    by 0xBD0F5B4: Ipopt::PDSearchDirCalculator::ComputeSearchDirection() (IpPDSearchDirCalc.cpp:90)<br>==13696==    by 0xBC737DD: Ipopt::IpoptAlgorithm::ComputeSearchDirection() (IpIpoptAlg.cpp:543)<br>==13696==    by 0xBC7057B: Ipopt::IpoptAlgorithm::Optimize(bool) (IpIpoptAlg.cpp:325)<br>==13696==    by 0xBD40FE5: Ipopt::MinC_1NrmRestorationPhase::PerformRestoration() (IpRestoMinC_1Nrm.cpp:164)<br>==13696==    by 0xBC3DB8D: Ipopt::BacktrackingLineSearch::FindAcceptableTrialPoint() (IpBacktrackingLineSearch.cpp:599)<br>==13696==    by 0xBC73D36: Ipopt::IpoptAlgorithm::ComputeAcceptableTrialPoint() (IpIpoptAlg.cpp:568)<br>==13696==    by 0xBC70909: Ipopt::IpoptAlgorithm::Optimize(bool) (IpIpoptAlg.cpp:350)<br>==13696==    by 0xBBA1E05: Ipopt::IpoptApplication::call_optimize() (IpIpoptApplication.cpp:922)<br>==13696==  Address 0xd0 is not stack'd, malloc'd or (recently) free'd<br>==13696== <br></div><div><br></div></div><div>==13696== Process terminating with default action of signal 11 (SIGSEGV)<br>==13696==  Access not within mapped region at address 0xD0<br>==13696==    at 0x470FA0: std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >::operator[](unsigned long) const (stl_vector.h:816)<br>==13696==    by 0x47124A: Ipopt::CompoundVector::IsCompNull(int) const (IpCompoundVector.hpp:90)<br>==13696==    by 0x47159B: Ipopt::IteratesVector::GetIterateFromComp(int) const (IpIteratesVector.hpp:637)<br>==13696==    by 0xBBAAFC9: Ipopt::IteratesVector::z_L() const (IpIteratesVector.hpp:276)<br>==13696==    by 0xBD0F5B4: Ipopt::PDSearchDirCalculator::ComputeSearchDirection() (IpPDSearchDirCalc.cpp:90)<br>==13696==    by 0xBC737DD: Ipopt::IpoptAlgorithm::ComputeSearchDirection() (IpIpoptAlg.cpp:543)<br>==13696==    by 0xBC7057B: Ipopt::IpoptAlgorithm::Optimize(bool) (IpIpoptAlg.cpp:325)<br>==13696==    by 0xBD40FE5: Ipopt::MinC_1NrmRestorationPhase::PerformRestoration() (IpRestoMinC_1Nrm.cpp:164)<br>==13696==    by 0xBC3DB8D: Ipopt::BacktrackingLineSearch::FindAcceptableTrialPoint() (IpBacktrackingLineSearch.cpp:599)<br>==13696==    by 0xBC73D36: Ipopt::IpoptAlgorithm::ComputeAcceptableTrialPoint() (IpIpoptAlg.cpp:568)<br>==13696==    by 0xBC70909: Ipopt::IpoptAlgorithm::Optimize(bool) (IpIpoptAlg.cpp:350)<br>==13696==    by 0xBBA1E05: Ipopt::IpoptApplication::call_optimize() (IpIpoptApplication.cpp:922)<br></div><div><br></div><div><br>So, my software is having a problem in IpCompoundVector.hpp:90. Probably I have done something wrong using the C API, but I have printed all data passed by means of callback and Valgrind does not complain about no initialized data in the printing. I have checked the indices also with an assert function to guarantee all indices are in the valid range for variables, constraints, and nonzeros derivatives. Does anyone have some idea what can be wrong here?<br><br></div>PS: When I try to solve the same problem by means of AMPL interface, IPOPT completes execution with success and declares local infeasibility.<br><br></div>Thank you for your attention.<br></div><div><br></div><div>Best regards<br></div><div><div><div><div><br>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Wendel</div></div></div></div></div></div>