Hello,
For some MIP model I have some IOT instruction (core dumped) when parallel is activated.
But when I run this MIP model in command line, Highs solved it.
Example with the file last_model.lp :
With this code :
#include <Highs.h>
int main(int argc, char **argv) {
std::string filename = "last_model.lp";
Highs highs;
highs.readModel(filename);
highs.setOptionValue("parallel", "on");
highs.run();
}
The output is
Running HiGHS 1.15.1 (git hash: 04024d7): Copyright (c) 2026 under MIT licence terms
Includes third-party software components, see THIRD_PARTY_NOTICES.md for full details
MIP last_model has 21180 rows; 22063 cols; 170585 nonzeros; 22063 integer variables (8839 binary)
Coefficient ranges:
Matrix [1e+00, 1e+06]
Cost [1e+04, 1e+04]
Bound [1e+00, 6e+03]
RHS [1e+00, 3e+03]
Presolving model
20760 rows, 20614 cols, 166957 nonzeros 0s
19099 rows, 19230 cols, 154917 nonzeros 0s
Presolve reductions: rows 19099(-2081); columns 19230(-2833); nonzeros 154917(-15668)
Objective function is integral with scale 0.0001
Solving MIP model with:
19099 rows
19230 cols (7937 binary, 11293 integer, 0 implied int., 0 continuous, 0 domain fixed)
154917 nonzeros
Thread count 11 (of 22 threads). Using 19 max workers. Parallel search on
Src: B => Branching; C => Central rounding; F => Feasibility pump; H => Heuristic;
I => Shifting; J => Feasibility jump; L => Sub-MIP; P => Empty MIP; R => Randomized rounding;
S => Solve LP; T => Evaluate node; U => Unbounded; X => User solution; Y => HiGHS solution;
Z => ZI Round; l => Trivial lower; p => Trivial point; u => Trivial upper; z => Trivial zero
Nodes | B&B Tree | Objective Bounds | Dynamic Constraints | Work
Src Proc. InQueue | Leaves Expl. | BestBound BestSol Gap | Cuts InLp Confl. | LpIters Time
J 0 0 0 0.00% -inf 640000 Large 0 0 0 0 0.5s
R 0 0 0 0.00% 10000 520000 98.08% 0 0 0 463 0.8s
C 0 0 0 0.00% 10000 510000 98.04% 2233 47 6 722 1.6s
[1] 985161 IOT instruction (core dumped) ./bench_error 2>&1 |
985162 done tee "log_error.txt"
But in command line :
../../depends/ubuntu2404/highs/bin/highs last_model.lp --parallel "on" 2>&1 | tee "log_no_error.txt"
Highs resolve the model :
Running HiGHS 1.15.1 (git hash: 04024d7): Copyright (c) 2026 under MIT licence terms
Includes third-party software components, see THIRD_PARTY_NOTICES.md for full details
Command line parsed using CLI11 2.5.0: Copyright (c) 2017-2025 University of Cincinnati
Set option parallel to "on"
MIP last_model has 21180 rows; 22063 cols; 170585 nonzeros; 22063 integer variables (8839 binary)
Coefficient ranges:
Matrix [1e+00, 1e+06]
Cost [1e+04, 1e+04]
Bound [1e+00, 6e+03]
RHS [1e+00, 3e+03]
Presolving model
20760 rows, 20614 cols, 166957 nonzeros 0s
19099 rows, 19230 cols, 154917 nonzeros 0s
Presolve reductions: rows 19099(-2081); columns 19230(-2833); nonzeros 154917(-15668)
Objective function is integral with scale 0.0001
Solving MIP model with:
19099 rows
19230 cols (7937 binary, 11293 integer, 0 implied int., 0 continuous, 0 domain fixed)
154917 nonzeros
Thread count 11 (of 22 threads). Using 19 max workers. Parallel search on
Src: B => Branching; C => Central rounding; F => Feasibility pump; H => Heuristic;
I => Shifting; J => Feasibility jump; L => Sub-MIP; P => Empty MIP; R => Randomized rounding;
S => Solve LP; T => Evaluate node; U => Unbounded; X => User solution; Y => HiGHS solution;
Z => ZI Round; l => Trivial lower; p => Trivial point; u => Trivial upper; z => Trivial zero
Nodes | B&B Tree | Objective Bounds | Dynamic Constraints | Work
Src Proc. InQueue | Leaves Expl. | BestBound BestSol Gap | Cuts InLp Confl. | LpIters Time
J 0 0 0 0.00% -inf 640000 Large 0 0 0 0 0.6s
R 0 0 0 0.00% 10000 520000 98.08% 0 0 0 463 0.8s
C 0 0 0 0.00% 10000 510000 98.04% 2233 47 6 722 1.6s
L 0 0 0 100.00% 10000 10000 0.00% 3588 103 6 1543 7.8s
1 0 1 100.00% 10000 10000 0.00% 1630 103 6 1718 7.8s
Solving report
Model last_model
Status Optimal
Primal bound 10000
Dual bound 10000
Gap 0% (tolerance: 0.01%)
P-D integral 7.04683010339
Solution status feasible
10000 (objective)
0 (bound viol.)
0 (int. viol.)
0 (row viol.)
Timing 7.80
1.73 (Presolve)
MIP time [calls] = 0.46 [1]
subMIP time [calls] = 1.27 [5]
6.06 (Solve)
MIP time [calls] = 2.37 [1]
subMIP time [calls] = 3.69 [5]
0.00 (Postsolve)
MIP time [calls] = 0.00 [1]
subMIP time [calls] = 0.00 [5]
Max sub-MIP depth 10
Nodes 1
Repair LPs 0
LP iterations 1718
0 (strong br.)
1080 (separation)
175 (heuristics)
Environment
- HiGHS 1.15.1 (git 04024d7)
- Ubuntu 24.04
- GCC 13.3
- x86_64
- 22 logical CPUs
- HiGHS built from source with CMake Release
gdb backtrace :
Thread 10 "bench_error" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffd6ffd6c0 (LWP 994723)]
__pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
warning: 44 ./nptl/pthread_kill.c: No such file or directory
(gdb) bt
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
#1 __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3 0x00007ffff764527e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4 0x00007ffff76288ff in __GI_abort () at ./stdlib/abort.c:79
#5 0x00007ffff7f597c2 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#6 0x00007ffff7f7c17d in __gcc_personality_v0 () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#7 0x000055555566fc12 in _Unwind_RaiseException_Phase2 ()
#8 0x00005555556704a0 in _Unwind_RaiseException ()
#9 0x00005555555c3c44 in __cxa_throw ()
#10 0x00007ffff7a84568 in HighsSplitDeque::checkInterrupt() [clone .part.0] [clone .lto_priv.0] ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#11 0x00007ffff7a9c48f in ipx::Control::InterruptCheck(int) const [clone .cold] ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#12 0x00007ffff7d99a86 in ipx::ConjugateResiduals::Solve(ipx::LinearOperator&, ipx::LinearOperator&, std::valarray<double> const&, double, double const*, int, std::valarray<double>&) ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#13 0x00007ffff7da801b in ipx::KKTSolverDiag::_Solve(std::valarray<double> const&, std::valarray<double> const&, double, std::valarray<double>&, std::valarray<double>&, ipx::Info*) ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#14 0x00007ffff7da4aa7 in ipx::KKTSolver::Solve(std::valarray<double> const&, std::valarray<double> const&, double, std::valarray<double>&, std::valarray<double>&, ipx::Info*) () from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#15 0x00007ffff7da5dfa in ipx::IPM::SolveNewtonSystem(double const*, double const*, double const*, double const*, double const*, double const*, ipx::IPM::Step&) () from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#16 0x00007ffff7da6514 in ipx::IPM::Predictor(ipx::IPM::Step&) ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#17 0x00007ffff7da6eb6 in ipx::IPM::Driver(ipx::KKTSolver*, ipx::Iterate*, ipx::Info*) ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#18 0x00007ffff7daf381 in ipx::LpSolver::RunInitialIPM(ipx::IPM&) ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#19 0x00007ffff7daf860 in ipx::LpSolver::RunIPM() ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#20 0x00007ffff7daf9dd in ipx::LpSolver::InteriorPointSolve() ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#21 0x00007ffff7db0269 in ipx::LpSolver::Solve() ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#22 0x00007ffff7b1dd2b in solveLpIpx(HighsOptions const&, HighsTimer&, HighsLp const&, HighsBasis&, HighsSolution&, HighsModelStatus&, HighsInfo&, HighsCallback&) () from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#23 0x00007ffff7b1e72d in solveLpIpx(HighsLpSolverObject&) ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#24 0x00007ffff7baa213 in solveLp(HighsLpSolverObject&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) () from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#25 0x00007ffff7b3b518 in Highs::callSolveLp(HighsLp&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#26 0x00007ffff7b30f0d in Highs::calledOptimizeModel()::{lambda(HighsLp&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double&)#1}::operator()(HighsLp&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double&) const () from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#27 0x00007ffff7b364ba in Highs::calledOptimizeModel() ()
from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#28 0x00007ffff7c307fe in HighsMipSolverData::startAnalyticCenterComputation(highs::parallel::TaskGroup const&)::{lambda()#1}::operator()() const [clone .lto_priv.0] () from /mnt/data/projets/pbyes-utils-benchmarks/depends/ubuntu2404/highs/lib/libhighs.so.1
#29 0x00007ffff7c35b16 in HighsTask::Callable<HighsMipSolverData::startAnalyticCenterComputation(highs::parallel::TaskGroup const&)::{lambda()#1}>::operator()() [clone .lto_priv.0] ()
Is there any known issue with the parallel MIP search when using the C++ API, or is there any additional information (backtrace, debug build, etc.) that would help diagnose the problem?
last_model.txt
Hello,
For some MIP model I have some IOT instruction (core dumped) when parallel is activated.
But when I run this MIP model in command line, Highs solved it.
Example with the file last_model.lp :
With this code :
The output is
But in command line :
Highs resolve the model :
Environment
gdb backtrace :
Is there any known issue with the parallel MIP search when using the C++ API, or is there any additional information (backtrace, debug build, etc.) that would help diagnose the problem?
last_model.txt