<div dir="ltr">Hi,<br><br>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):<br>
<br>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...<br><br>Here's the output of the core dump with dbx:<br>
<br>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
t@41 (l@41) terminated by signal SEGV (Segmentation Fault)<br>0xffffffff26ef4c2c: ___pl_pp_dgemm_64_+0x002c: stx %i5, [%sp + 2263]<br>dbx: core file read error: address 0xffffffff2e2426b0 not in data space<br>Current function is Ipopt::IpBlasDgemm<br>
199 F77_FUNC(dgemm,DGEMM)(&TRANSA, &TRANSB, &M, &N, &K, &alpha, A, &LDA,<br>(dbx) where<br>current thread: t@41<br> [1] ___pl_pp_dgemm_64_(0xffffffff2e43bf43, 0xffffffff2e43bf42, 0xffffffff2e43bdc0, 0xffffffff2e43bdb8, 0xffffffff2e43bdb0, 0xffffffff2e43bf90), at 0xffffffff26ef4c2c<br>
[2] ___pl_dgemm_64_(0x1, 0x0, 0x1, 0x4, 0x0, 0xffffffff2e43bf68), at 0xffffffff26e5ac0c<br> [3] ___pl_dgemm_(0x4, 0x4, 0xffffffff2e43bf58, 0xffffffff2e43bf54, 0xffffffff2e43bf50, 0x4), at 0xffffffff2755ac10<br>=>[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"<br>
[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"<br> [6] Ipopt::LimMemQuasiNewtonUpdater::UpdateHessian(this = 0x1), line 464 in "IpLimMemQuasiNewtonUpdater.cpp"<br>
[7] Ipopt::IpoptAlgorithm::UpdateHessian(this = 0x1), line 484 in "IpIpoptAlg.cpp"<br> [8] Ipopt::IpoptAlgorithm::Optimize(this = 0x1), line 301 in "IpIpoptAlg.cpp"<br> [9] Ipopt::IpoptApplication::call_optimize(this = 0x1), line 663 in "IpIpoptApplication.cpp"<br>
[10] Ipopt::IpoptApplication::OptimizeNLP(this = 0x1, nlp = CLASS, alg_builder = CLASS), line 563 in "IpIpoptApplication.cpp"<br> [11] Ipopt::IpoptApplication::OptimizeNLP(this = 0x1, nlp = CLASS), line 542 in "IpIpoptApplication.cpp"<br>
[12] Ipopt::IpoptApplication::OptimizeTNLP(this = 0x1, tnlp = CLASS), line 521 in "IpIpoptApplication.cpp"<br> [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"<br>
[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"<br>
...<br>(dbx)<br>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
<br>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...<br><br>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!<br>
<br>Surprisingly it works perfectly under Linux with the same dataset!!!<br><br>Any idea?<br><br>Thanks<br><br>Christian<br><br></div>