Comment 0 for bug 1833037

Revision history for this message
Graham Inggs (ginggs) wrote :

[Impact]
IPOPT uses uninitialized memory due to a change in the MUMPS API.
First reported in idyntree upstream:
https://github.com/robotology/idyntree/issues/456
Running ipopt_example in valgrind gives the following output:

==8203== Conditional jump or move depends on uninitialised value(s)
==8203== at 0x5C41E26: dmumps_ (in /usr/lib/x86_64-linux-gnu/libdmumps_seq-5.1.2.so)
==8203== by 0x5C4744D: dmumps_f77_ (in /usr/lib/x86_64-linux-gnu/libdmumps_seq-5.1.2.so)
==8203== by 0x5C3FF52: dmumps_c (in /usr/lib/x86_64-linux-gnu/libdmumps_seq-5.1.2.so)
==8203== by 0x4C34336:
Ipopt::MumpsSolverInterface::MumpsSolverInterface() (in /usr/lib/libipopt.so.1.9.9)
==8203== by 0x4B64B7A:
Ipopt::AlgorithmBuilder::BuildBasicAlgorithm(Ipopt::Journalist const&, Ipopt::OptionsList const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/lib/libipopt.so.1.9.9)
==8203== by 0x4B26CB5:
Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&, Ipopt::SmartPtr<Ipopt::AlgorithmBuilder>&) (in /usr/lib/libipopt.so.1.9.9)
==8203== by 0x4B1E4D8:
Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&) (in /usr/lib/libipopt.so.1.9.9)
==8203== by 0x4B1E6A9:
Ipopt::IpoptApplication::OptimizeTNLP(Ipopt::SmartPtr<Ipopt::TNLP> const&) (in /usr/lib/libipopt.so.1.9.9)
==8203== by 0x10B58F: main (in /home/graham/debian-packages-ssd/coinor-ipopt/ipopt-cmake-demo/build/ipopt_example)
...
==8203== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

[Test Case]
sudo apt install cmake valgrind build-essential coinor-libipopt-dev
git clone https://github.com/traversaro/ipopt-cmake-demo
cd ipopt-cmake-demo
mkdir build
cd build
cmake ..
make
valgrind ./ipopt_example

valgrind should report 0 errors:
==8300== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

[Regression Potential]
Reverse build dependencies are freefem++ and kido