[Ipopt] Solaris and Segmentation Fault

Christian Bourque christian.bourque at gmail.com
Sun Sep 28 13:02:32 EDT 2008


Hi,

I'm currently experiencing a weird problem with Ipopt and Blas on Solaris
(SPARC). Each time we try to solve a specific problem we get a SIGSEGV as
soon as a Blas function is called (DGEMM):

The problem only happens when I set max_iter to 400, it works with 5-10
iterations... I guess the Blas function doesn't get called with a small
number of iterations...

Here's the output of the core dump with dbx:

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
t at 41 (l at 41) terminated by signal SEGV (Segmentation Fault)
0xffffffff26ef4c2c: ___pl_pp_dgemm_64_+0x002c:  stx      %i5, [%sp + 2263]
dbx: core file read error: address 0xffffffff2e2426b0 not in data space
Current function is Ipopt::IpBlasDgemm
  199       F77_FUNC(dgemm,DGEMM)(&TRANSA, &TRANSB, &M, &N, &K, &alpha, A,
&LDA,
(dbx) where
current thread: t at 41
  [1] ___pl_pp_dgemm_64_(0xffffffff2e43bf43, 0xffffffff2e43bf42,
0xffffffff2e43bdc0, 0xffffffff2e43bdb8, 0xffffffff2e43bdb0,
0xffffffff2e43bf90), at 0xffffffff26ef4c2c
  [2] ___pl_dgemm_64_(0x1, 0x0, 0x1, 0x4, 0x0, 0xffffffff2e43bf68), at
0xffffffff26e5ac0c
  [3] ___pl_dgemm_(0x4, 0x4, 0xffffffff2e43bf58, 0xffffffff2e43bf54,
0xffffffff2e43bf50, 0x4), at 0xffffffff2755ac10
=>[4] Ipopt::IpBlasDgemm(transa = true, transb = false, m = 4, n = 4, k = 4,
alpha = 1.0, A = 0x1, ldA = 4, B = 0x1, ldB = 4, beta = 0.0, C = 0x1, ldC =
4), line 199 in "IpBlas.cpp"
  [5] Ipopt::DenseGenMatrix::AddMatrixProduct(this = 0x1, alpha = 1.0, A =
CLASS, transA = true, B = CLASS, transB = false, beta = 0.0), line 90 in
"IpDenseGenMatrix.cpp"
  [6] Ipopt::LimMemQuasiNewtonUpdater::UpdateHessian(this = 0x1), line 464
in "IpLimMemQuasiNewtonUpdater.cpp"
  [7] Ipopt::IpoptAlgorithm::UpdateHessian(this = 0x1), line 484 in
"IpIpoptAlg.cpp"
  [8] Ipopt::IpoptAlgorithm::Optimize(this = 0x1), line 301 in
"IpIpoptAlg.cpp"
  [9] Ipopt::IpoptApplication::call_optimize(this = 0x1), line 663 in
"IpIpoptApplication.cpp"
  [10] Ipopt::IpoptApplication::OptimizeNLP(this = 0x1, nlp = CLASS,
alg_builder = CLASS), line 563 in "IpIpoptApplication.cpp"
  [11] Ipopt::IpoptApplication::OptimizeNLP(this = 0x1, nlp = CLASS), line
542 in "IpIpoptApplication.cpp"
  [12] Ipopt::IpoptApplication::OptimizeTNLP(this = 0x1, tnlp = CLASS), line
521 in "IpIpoptApplication.cpp"
  [13] IpoptSolve(ipopt_problem = 0x1, x = 0x1, g = 0xffffffff, obj_val =
0x1, mult_g = 0xffffffff, mult_x_L = 0x1, mult_x_U = 0x1, user_data = 0x1),
line 241 in "IpStdCInterface.cpp"
  [14] Java_org_coinor_Ipopt_IpoptSolve(env = 0x1, obj_this = 0xffffffff,
pipopt = 4326409920, xj = 0xffffffff, gj = 0xffffffff, obj_valj =
0xffffffff, mult_gj = 0xffffffff, mult_x_Lj = 0xffffffff, mult_x_Uj =
0xffffffff, callback_grad_f = 0xffffffff, callback_jac_g = 0xffffffff,
callback_hess = 0xffffffff), line 175 in "jipopt.cpp"
...
(dbx)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

First I thought that it was a problem with the 64 bits version of Blas but I
recompiled it in 32 bits and got the same error...

I tried with different combination of libraries: Mumps and MA27, stock Blas
and Blas bundled with Solaris (libsunperf) without any success, always the
same error!

Surprisingly it works perfectly under Linux with the same dataset!!!

Any idea?

Thanks

Christian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.coin-or.org/pipermail/ipopt/attachments/20080928/5b74430e/attachment.html 


More information about the Ipopt mailing list