[Ipopt] Memory Leaks

Stefan Vigerske stefan at math.hu-berlin.de
Sat Nov 24 12:08:26 EST 2018


Hi,

these rather look as if memory that has been allocated in MA97 is 
leaking. From looking at the MA97 interface, I wouldn't say that Ipopt 
is using MA97 wrongly.
It's also possible that these are false positive and the Sanitzer just 
doesn't recognize when the memory is freed. You could double-check 
whether valgrind also reports these leaks.

Stefan

On 11/17/18 12:01 AM, Daniel Feenberg wrote:
> 
> I am having some success finding optima, but if I run with the debugger 
> enabled
> I get complaints from ASAN about more than a 1,000 memory leaks during the
> execution of the code. Other times (really most times) the solver 
> converges to
> an ifeasible region, even though there does exist a feasible solution. 
> Should I
> be concerned about the leaks? Do they suggest I have a bug in my fortran 
> or is
> there a known leak in the solver? For example, here are the first three
> messages:
> 
> 
> =================================================================
> ==18806==ERROR: LeakSanitizer: detected memory leaks
> Indirect leak of 102213696 byte(s) in 1 object(s) allocated from:
>      #0 0x4a8728 in __interceptor_malloc
>         /usr/local/src/gcc-6.4.0/libsanitizer/asan/asan_malloc_linux.cc:62
>      #1 0x2aaaada11519 in smalloc_setup coinhsl/hsl_ma97/hsl_ma97d.f90:8200
>      #2 0x2aaaada320d5 in __hsl_ma97_double_MOD_ma97_factor_solve_double
>         coinhsl/hsl_ma97/hsl_ma97d.f90:2428
>      #3 0x2aaaada34e80 in __hsl_ma97_double_MOD_ma97_factor_double
>         coinhsl/hsl_ma97/hsl_ma97d.f90:2024
>      #4 0x2aaaada45037 in ma97_factor_d
> coinhsl/hsl_ma97/C/hsl_ma97d_ciface.f90:429
>      #5 0x2aaaaaeec915 in Ipopt::Ma97SolverInterface::MultiSolve(bool, int
> const*,
>         int const*, int, double*, bool, int)
> (/usr/local/lib64/libipopt.so.1+0x21e915)
> 
> Indirect leak of 63307048 byte(s) in 1 object(s) allocated from:
>      #0 0x4a8728 in __interceptor_malloc
>         /usr/local/src/gcc-6.4.0/libsanitizer/asan/asan_malloc_linux.cc:62
>      #1 0x2aaaada31714 in __hsl_ma97_double_MOD_ma97_factor_solve_double
>         coinhsl/hsl_ma97/hsl_ma97d.f90:2387
>      #2 0x2aaaada34e80 in __hsl_ma97_double_MOD_ma97_factor_double
>         coinhsl/hsl_ma97/hsl_ma97d.f90:2024
>      #3 0x2aaaada45037 in ma97_factor_d
> coinhsl/hsl_ma97/C/hsl_ma97d_ciface.f90:429
>      #4 0x2aaaaaeec915 in Ipopt::Ma97SolverInterface::MultiSolve(bool, int
> const*,
>         int const*, int, double*, bool, int)
> (/usr/local/lib64/libipopt.so.1+0x21e915)
> 
> Indirect leak of 25317216 byte(s) in 4 object(s) allocated from:
>      #0 0x4a9770 in operator new[](unsigned long)
>         /usr/local/src/gcc-6.4.0/libsanitizer/asan/asan_new_delete.cc:62
>      #1 0x2aaaaaf3ea54 in 
> Ipopt::GenTMatrix::GenTMatrix(Ipopt::GenTMatrixSpace
> const*)
>         (/usr/local/lib64/libipopt.so.1+0x270a54)
> Indirect leak of 16963328 byte(s) in 1 object(s) allocated from:
>      #0 0x4a9770 in operator new[](unsigned long)
>         /usr/local/src/gcc-6.4.0/libsanitizer/asan/asan_new_delete.cc:62
>      #1 0x2aaaaaeec36e in 
> Ipopt::Ma97SolverInterface::InitializeStructure(int,
> int, int const*,
>         int const*) (/usr/local/lib64/libipopt.so.1+0x21e36e)
> 
> Indirect leak of 16963328 byte(s) in 1 object(s) allocated from:
>      #0 0x4a8728 in __interceptor_malloc
> /usr/local/src/gcc-6.4.0/libsanitizer/asan/asan_malloc_linux.cc:62
>      #1 0x2aaaada366ca in analyse_phase coinhsl/hsl_ma97/hsl_ma97d.f90:1799
>      #2 0x2aaaada408ed in __hsl_ma97_double_MOD_analyse_double
> coinhsl/hsl_ma97/hsl_ma97d.f90:769
>      #3 0x2aaaada42562 in ma97_analyse_d
> coinhsl/hsl_ma97/C/hsl_ma97d_ciface.f90:235
>      #4 0x2aaaaaeec42e in 
> Ipopt::Ma97SolverInterface::InitializeStructure(int,
> int, int const*,
>         int const*) (/usr/local/lib64/libipopt.so.1+0x21e42e)
> 
> 
> 
> This is Ipopt version 3.12.8, running with linear solver ma97. The 
> compiler is
> GNU Fortran (GCC) 6.4.0. Here is the script that compiles and runs the 
> program:
> 
> setenv KMP_STACKSIZE 12000000
> limit stacksize unlimited
> setenv LD_LIBRARY_PATH
> "/usr/local/lib64:/usr/lib64:/lib64:/usr/local/Ipopt/lib:\
>         /usr/local/lib:/usr/lib:/lib"
> setenv include /usr/local/Ipopt/Ipopt/src/Interfaces
> /usr/local/bin/gfortran -fsanitize=address -fbounds-check -g \
>      -fbacktrace -ffpe-trap=zero,overflow,underflow,invalid 
> -L/usr/local/lib64 \
>      -L/usr/local/Ipopt/lib -lipopt -llapack -ldl -lcoinmumps \
>      -static-libasan \
>      -lblas -lcoinmetis -lstdc++ -lm -I$include \
>      max.f
> setenv LD_LIBRARY_PATH
> "/usr/local/lib64:/usr/lib64:/lib64:/usr/local/Ipopt/lib:\
>        /usr/local/lib:/usr/lib:/lib"
> gdb  ./a.out
> 
> If it is of any interest, I am maximizing an entropy function subject to 
> linear
> constraints on weight averages of the probabilities.
> 
> Daniel Feenberg
> NBER
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_ipopt&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=BRcuJnQr5NAzU29t80hk2rsLc4vrlRySBDabuq0O1ZI&m=BDyJeRgRbel5-OTLrAnbymdNhTzrM2vgSUKUmT_eGdQ&s=1JYF8JmKKC0GHaMOfJeXvlfemGQ2eY-P4yyqXpA2lN4&e= 
> 
> 



More information about the Ipopt mailing list