[Ipopt] MA97 Segfault with HSL 2013 and Ipopt 3.11.1

Breannan Smith smith at cs.columbia.edu
Tue Jun 25 13:09:28 EDT 2013


After upgrading to HSL 2013 and Ipopt 3.11.1, I've started to
experience segfaults with MA97 on various problems (the other HSL
solvers seem fine). The problem occurs when I use MA97 to solve
multiple problem instances in serial.

A backtrace (full output below) shows that the segfault occurs when
the Ma97SolverInterface destructor is invoked. The segfault occurs
with both the GNU toolchain (4.6.4) and Intel's toolchain (13.0.1) on
Linux and OS X, and occurs whether or not I build Ipopt/HSL with
OpenMP support. Running in valgrind I obtain a "Conditional jump or
move depends on uninitialised value(s)" error for MA97 but not with
the other HSL solvers (again, full output included below).

I am building Ipopt with HSL, Metis, and Mumps, and configuring Ipopt
with: ../configure CXX=g++-4.6 CC=gcc-4.6 F77=gfortran-4.6
--enable-debug -with-ipopt-checklevel=1

Any ideas as to the cause? I have a tiny, self-contained executable
that elicits the segfault, and am happy to forward the source on.

Thanks!

Best regards,
Breannan Smith
smith at cs.columbia.edu

Valgrind output:

==26954== Conditional jump or move depends on uninitialised value(s)
==26954==    at 0x8B2EB8: ma97_free_akeep_d (hsl_ma97d_ciface.f90:610)
==26954==    by 0x8B938A: ma97_finalise_d (hsl_ma97d_ciface.f90:654)
==26954==    by 0x627789:
Ipopt::Ma97SolverInterface::~Ma97SolverInterface()
(IpMa97SolverInterface.cpp:52)
==26954==    by 0x6277E9:
Ipopt::Ma97SolverInterface::~Ma97SolverInterface()
(IpMa97SolverInterface.cpp:53)
==26954==    by 0x5331EE:
Ipopt::SmartPtr<Ipopt::SparseSymLinearSolverInterface>::ReleasePointer_()
(IpSmartPtr.hpp:554)
==26954==    by 0x53049D:
Ipopt::SmartPtr<Ipopt::SparseSymLinearSolverInterface>::~SmartPtr()
(IpSmartPtr.hpp:434)
==26954==    by 0x61C676: Ipopt::TSymLinearSolver::~TSymLinearSolver()
(IpTSymLinearSolver.cpp:40)
==26954==    by 0x61C6FF: Ipopt::TSymLinearSolver::~TSymLinearSolver()
(IpTSymLinearSolver.cpp:47)
==26954==    by 0x54D084:
Ipopt::SmartPtr<Ipopt::SymLinearSolver>::ReleasePointer_()
(IpSmartPtr.hpp:554)
==26954==    by 0x54BEB7:
Ipopt::SmartPtr<Ipopt::SymLinearSolver>::~SmartPtr()
(IpSmartPtr.hpp:434)
==26954==    by 0x60CFE9:
Ipopt::StdAugSystemSolver::~StdAugSystemSolver()
(IpStdAugSystemSolver.cpp:58)
==26954==    by 0x60D123:
Ipopt::StdAugSystemSolver::~StdAugSystemSolver()
(IpStdAugSystemSolver.cpp:61)
==26954==

Full backtrace:

#0  0x00007ffff5c76425 in __GI_raise (sig=<optimized out>) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff5c79b8b in __GI_abort () at abort.c:91
#2  0x00007ffff5cb439e in __libc_message (do_abort=2,
fmt=0x7ffff5dbe008 "*** glibc detected *** %s: %s: 0x%s ***\n")
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:201
#3  0x00007ffff5cbeb96 in malloc_printerr (action=3,
str=0x7ffff5dba913 "free(): invalid pointer", ptr=<optimized out>) at
malloc.c:5018
#4  0x00000000009e86cd in hsl_ma97_double::free_akeep_double
(akeep=...) at ../../../ThirdParty/HSL/coinhsl/hsl_ma97/hsl_ma97d.f90:6667
#5  0x00000000008b2ed5 in ma97_free_akeep_d (cakeep=0x7ffff5ff8778)
    at ../../../ThirdParty/HSL/coinhsl/hsl_ma97/C/hsl_ma97d_ciface.f90:612
#6  0x00000000008b938b in ma97_finalise_d (cakeep=0x7ffff5ff8778, cfkeep=0x0)
    at ../../../ThirdParty/HSL/coinhsl/hsl_ma97/C/hsl_ma97d_ciface.f90:654
#7  0x000000000062778a in
Ipopt::Ma97SolverInterface::~Ma97SolverInterface (this=0xda8f40,
__in_chrg=<optimized out>)
    at ../../../../../Ipopt/src/Algorithm/LinearSolvers/IpMa97SolverInterface.cpp:52
#8  0x00000000006277ea in
Ipopt::Ma97SolverInterface::~Ma97SolverInterface (this=0xda8f40,
__in_chrg=<optimized out>)
    at ../../../../../Ipopt/src/Algorithm/LinearSolvers/IpMa97SolverInterface.cpp:53
#9  0x00000000005331ef in
Ipopt::SmartPtr<Ipopt::SparseSymLinearSolverInterface>::ReleasePointer_
(this=0xda6178)
    at ../../../../Ipopt/src/Interfaces/../Common/IpSmartPtr.hpp:554
#10 0x000000000053049e in
Ipopt::SmartPtr<Ipopt::SparseSymLinearSolverInterface>::~SmartPtr
(this=0xda6178, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Interfaces/../Common/IpSmartPtr.hpp:434
#11 0x000000000061c677 in Ipopt::TSymLinearSolver::~TSymLinearSolver
(this=0xda6120, __in_chrg=<optimized out>)
    at ../../../../../Ipopt/src/Algorithm/LinearSolvers/IpTSymLinearSolver.cpp:40
#12 0x000000000061c700 in Ipopt::TSymLinearSolver::~TSymLinearSolver
(this=0xda6120, __in_chrg=<optimized out>)
    at ../../../../../Ipopt/src/Algorithm/LinearSolvers/IpTSymLinearSolver.cpp:47
#13 0x000000000054d085 in
Ipopt::SmartPtr<Ipopt::SymLinearSolver>::ReleasePointer_
(this=0xda8498)
    at ../../../../Ipopt/src/Algorithm/../Common/IpSmartPtr.hpp:554
#14 0x000000000054beb8 in
Ipopt::SmartPtr<Ipopt::SymLinearSolver>::~SmartPtr (this=0xda8498,
__in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/../Common/IpSmartPtr.hpp:434
#15 0x000000000060cfea in
Ipopt::StdAugSystemSolver::~StdAugSystemSolver (this=0xda8460,
__in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpStdAugSystemSolver.cpp:58
#16 0x000000000060d124 in
Ipopt::StdAugSystemSolver::~StdAugSystemSolver (this=0xda8460,
__in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpStdAugSystemSolver.cpp:61
#17 0x00000000005162b1 in
Ipopt::SmartPtr<Ipopt::AugSystemSolver>::ReleasePointer_
(this=0xda7eb8)
    at ../../../../Ipopt/src/Interfaces/../Common/IpSmartPtr.hpp:554
#18 0x0000000000514ae8 in
Ipopt::SmartPtr<Ipopt::AugSystemSolver>::~SmartPtr (this=0xda7eb8,
__in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Interfaces/../Common/IpSmartPtr.hpp:434
#19 0x00000000005dc516 in Ipopt::PDFullSpaceSolver::~PDFullSpaceSolver
(this=0xda7e80, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpPDFullSpaceSolver.cpp:40
#20 0x00000000005dc5a0 in Ipopt::PDFullSpaceSolver::~PDFullSpaceSolver
(this=0xda7e80, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpPDFullSpaceSolver.cpp:43
#21 0x00000000005412e1 in
Ipopt::SmartPtr<Ipopt::PDSystemSolver>::ReleasePointer_
(this=0xda8ee8)
    at ../../../../../Ipopt/src/contrib/CGPenalty/../../Common/IpSmartPtr.hpp:554
#22 0x000000000054028e in
Ipopt::SmartPtr<Ipopt::PDSystemSolver>::~SmartPtr (this=0xda8ee8,
__in_chrg=<optimized out>)
    at ../../../../../Ipopt/src/contrib/CGPenalty/../../Common/IpSmartPtr.hpp:434
#23 0x00000000005e77ac in
Ipopt::PDSearchDirCalculator::~PDSearchDirCalculator (this=0xda8eb0,
__in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpPDSearchDirCalc.cpp:28
#24 0x00000000005e780c in
Ipopt::PDSearchDirCalculator::~PDSearchDirCalculator (this=0xda8eb0,
__in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpPDSearchDirCalc.cpp:32
#25 0x000000000054c969 in
Ipopt::SmartPtr<Ipopt::SearchDirectionCalculator>::ReleasePointer_
(this=0xda70c8)
    at ../../../../Ipopt/src/Algorithm/../Common/IpSmartPtr.hpp:554
#26 0x000000000054b8d4 in
Ipopt::SmartPtr<Ipopt::SearchDirectionCalculator>::~SmartPtr
(this=0xda70c8, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/../Common/IpSmartPtr.hpp:434
---Type <return> to continue, or q <return> to quit---
#27 0x000000000057692e in Ipopt::IpoptAlgorithm::~IpoptAlgorithm
(this=0xda7090, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpIpoptAlg.cpp:54
#28 0x0000000000576a3c in Ipopt::IpoptAlgorithm::~IpoptAlgorithm
(this=0xda7090, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Algorithm/IpIpoptAlg.cpp:58
#29 0x0000000000516395 in
Ipopt::SmartPtr<Ipopt::IpoptAlgorithm>::ReleasePointer_
(this=0xd74880)
    at ../../../../Ipopt/src/Interfaces/../Common/IpSmartPtr.hpp:554
#30 0x0000000000514bac in
Ipopt::SmartPtr<Ipopt::IpoptAlgorithm>::~SmartPtr (this=0xd74880,
__in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Interfaces/../Common/IpSmartPtr.hpp:434
#31 0x000000000050b146 in Ipopt::IpoptApplication::~IpoptApplication
(this=0xd74850, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Interfaces/IpIpoptApplication.cpp:561
#32 0x000000000050b294 in Ipopt::IpoptApplication::~IpoptApplication
(this=0xd74850, __in_chrg=<optimized out>)
    at ../../../../Ipopt/src/Interfaces/IpIpoptApplication.cpp:565
#33 0x00000000004fa62d in
Ipopt::SmartPtr<Ipopt::IpoptApplication>::ReleasePointer_
(this=0x7fffffffe840)
    at /proj/cg/users/smith/research_current/gr/code/libs/ipopt_green_gnu_hsl2013/include/coin/IpSmartPtr.hpp:554
#34 0x00000000004fa38a in
Ipopt::SmartPtr<Ipopt::IpoptApplication>::~SmartPtr
(this=0x7fffffffe840, __in_chrg=<optimized out>)
    at /proj/cg/users/smith/research_current/gr/code/libs/ipopt_green_gnu_hsl2013/include/coin/IpSmartPtr.hpp:434
#35 0x00000000004f9d4a in solveBCQP (C=..., c=..., x_l=..., x_u=...)
    at /proj/cg/users/smith/research_current/gr/code/sdic/BCQPSolver/bc_qp_solver.cpp:62
#36 0x00000000004fa145 in main (argc=2, argv=0x7fffffffea08)
    at /proj/cg/users/smith/research_current/gr/code/sdic/BCQPSolver/bc_qp_solver.cpp:129


More information about the Ipopt mailing list