[Ipopt] A small bug

darknesswind darknesswind at qq.com
Fri Nov 8 02:48:13 EST 2013


When I run the solver on a problem with all fixed variables, I found the DenseVector "ip_data_->curr()->z_L()" is uninitialized in function IpoptCalculatedQuantities::trial_slack_x_L.It may cause a crash in release version because of access violation.

The problem is:
y = x1 * x2
subject to:
x1 * x2 = 0
x1 = 0
x2 = 0

Here is the call stack:        The dense_x->homogeneous_ equal to false but the dense_x->values_ is null.

>	ipopt.dll!Ipopt::DenseVector::ElementWiseDivideImpl(const Ipopt::Vector & x)  Line 240	C++
 	ipopt.dll!Ipopt::Vector::ElementWiseDivide(const Ipopt::Vector & x)  Line 602 + 0x13 bytes	C++
 	ipopt.dll!Ipopt::IpoptCalculatedQuantities::CalculateSafeSlack(Ipopt::SmartPtr<Ipopt::Vector> & slack, const Ipopt::SmartPtr<Ipopt::Vector const > & bound, const Ipopt::SmartPtr<Ipopt::Vector const > & curr_point, const Ipopt::SmartPtr<Ipopt::Vector const > & multiplier)  Line 481	C++
 	ipopt.dll!Ipopt::IpoptCalculatedQuantities::trial_slack_x_L()  Line 365 + 0x5b bytes	C++
 	ipopt.dll!Ipopt::DefaultIterateInitializer::SetInitialIterates()  Line 278 + 0x16 bytes	C++
 	ipopt.dll!Ipopt::IpoptAlgorithm::InitializeIterates()  Line 545 + 0x26 bytes	C++
 	ipopt.dll!Ipopt::IpoptAlgorithm::Optimize(bool isResto)  Line 274	C++
 	ipopt.dll!Ipopt::IpoptApplication::call_optimize()  Line 860 + 0xd bytes	C++
 	ipopt.dll!Ipopt::IpoptApplication::OptimizeNLP(const Ipopt::SmartPtr<Ipopt::NLP> & nlp, Ipopt::SmartPtr<Ipopt::AlgorithmBuilder> & alg_builder)  Line 754 + 0x8 bytes	C++
 	ipopt.dll!Ipopt::IpoptApplication::OptimizeNLP(const Ipopt::SmartPtr<Ipopt::NLP> & nlp)  Line 717 + 0x17 bytes	C++
 	ipopt.dll!Ipopt::IpoptApplication::OptimizeTNLP(const Ipopt::SmartPtr<Ipopt::TNLP> & tnlp)  Line 696 + 0x16 bytes	C++



More information about the Ipopt mailing list