Ipopt with JuMP -- Restoration Failure Crashing Julia

I have some code calling Ipopt through JuMP. I’m in the testing phase and have a small and large-ish problem. Small problem runs without issue.

The large problem hits a Restoration Failure (ok, I can work to fix that). On Windows running Julia 1.4.2, Ipopt v0.6.2, and JuMP v0.21.2

Restoration phase is called at point that is almost feasible,
with constraint violation 5.674943e-06. Abort.

Number of Iterations…: 411
The program finishes OK.

In Ubuntu julia 1.4.1, Ipopt v0.6.2, and JuMP v0.21.2, I get the same, plus a stack trace and Julia crashes.

Restoration phase is called at point that is almost feasible,
with constraint violation 5.674943e-06. Abort.

signal (6): Aborted
in expression starting at /home/dompazz/files/Pacing/hierarchy/pcf_pacing_hier.jl:492
gsignal at /usr/bin/…/lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /usr/bin/…/lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7f32c2400675)
_ZN5Ipopt22BacktrackingLineSearch24FindAcceptableTrialPointEv.cold.221 at /home/dompazz/.julia/artifacts/6ab67e4ac077183345b1d6dec8ee7fd34b4e9fd7/lib/libipopt.so (unknown line)
_ZN5Ipopt14IpoptAlgorithm8OptimizeEb at /home/dompazz/.julia/artifacts/6ab67e4ac077183345b1d6dec8ee7fd34b4e9fd7/lib/libipopt.so (unknown line)
_ZN5Ipopt16IpoptApplication13call_optimizeEv at /home/dompazz/.julia/artifacts/6ab67e4ac077183345b1d6dec8ee7fd34b4e9fd7/lib/libipopt.so (unknown line)
_ZN5Ipopt16IpoptApplication11OptimizeNLPERKNS_8SmartPtrINS_3NLPEEERNS1_INS_16AlgorithmBuilderEEE at /home/dompazz/.julia/artifacts/6ab67e4ac077183345b1d6dec8ee7fd34b4e9fd7/lib/libipopt.so (unknown line)
_ZN5Ipopt16IpoptApplication11OptimizeNLPERKNS_8SmartPtrINS_3NLPEEE at /home/dompazz/.julia/artifacts/6ab67e4ac077183345b1d6dec8ee7fd34b4e9fd7/lib/libipopt.so (unknown line)
_ZN5Ipopt16IpoptApplication12OptimizeTNLPERKNS_8SmartPtrINS_4TNLPEEE at /home/dompazz/.julia/artifacts/6ab67e4ac077183345b1d6dec8ee7fd34b4e9fd7/lib/libipopt.so (unknown line)
IpoptSolve at /home/dompazz/.julia/artifacts/6ab67e4ac077183345b1d6dec8ee7fd34b4e9fd7/lib/libipopt.so (unknown line)
solveProblem at /home/dompazz/.julia/packages/Ipopt/YJcu4/src/Ipopt.jl:361

unknown function (ip: (nil))
Allocations: 19822480084 (Pool: 19822426594; Big: 53490); GC: 8184

Julia has exited.

Julia was installed with apt-install on Ubuntu and 1.4.1 is the most recent version available. I can manually upgrade if that is the issue. I would prefer to develop on the Ubuntu machine as it has newer and more processors.

Is this a known issue with Julia 1.4.1 or something else?

Do you have a reproducible example we can run to test?

Input data on the large problem is about 500M. I cannot reproduce on a small data set, I only see it on the larger problem.

I don’t think we can be of much help then. Are you running out of memory or something?

Nope. In fact windows has less memory than the Ubuntu machine. This looks like a return code from the Ipopt library that is causing Julia to abort. Maybe this is better put as an issue in Ipopt.jl?

A non-zero return code from Ipopt shouldn’t cause Julia to crash: https://github.com/jump-dev/Ipopt.jl/blob/291436532375db9154aec6a562c3781f65ff4967/src/Ipopt.jl#L361-L362
The fact that Windows is okay suggests it is not an Ipopt.jl issue.

It’s coming from here:
https://github.com/coin-or/Ipopt/blob/af96dbf5b2f90ded99937ae94df82a92cb63a78a/src/Algorithm/IpBacktrackingLineSearch.cpp#L584-L587

Agree that it shouldn’t, but can see empirically that it does.

I’m going to search around for an small example that produces this error from Ipopt. If you know of one, please let me know.

I will test it on both machines and see if that can reproduce the crash.

@odow suggested that the issue is probably not due to Ipopt.jl the wrapper, although it could be an error in Ipopt itself. From you stacktrace, it looks like a C error in libipopt.so .

I’ll be standing up a new Linux box tomorrow. I can see if that has the same problem. It could be an issue with the Windows vs Linux builds of Ipopt, true. The versions are the same.

Looks like this is either an issue with Julia 1.4.1 or the Unofficial package available through apt in Ubuntu.

Removed the Ubuntu package and installed the official 1.4.2 binary. Same error, but does not cause a crash in Julia.