-
Notifications
You must be signed in to change notification settings - Fork 105
Description
Note
This bug relates to cbcbox, which is the Python distribution of CBC the recent versions of python-mip depend on, so it clearly also affects python-mip users. I am reporting this bug here because the bug tracker at the cbcbox project is not active. @h-g-s
Describe the bug
CBC crashes reproducibly on Linux with a SIGILL (illegal instruction) error on some computers with older x86_64 CPUs, e.g. on Intel's Core i7 Ivy-Bridge series that does not support AVX2.
To Reproduce
Install cbcbox using pip and run:
$ cbc stein45.mps -solve -quit
Welcome to the CBC MILP Solver
Version: Devel (unstable)
Build Date: Mar 23 2026
command line - stein45.mps -solve -quit (default strategy 1)
At line 15 NAME STEIN45
At line 16 ROWS
At line 349 COLUMNS
At line 895 RHS
At line 1062 BOUNDS
At line 1108 ENDATA
Problem STEIN45 has 331 rows, 45 columns and 1034 elements
Coin0008I STEIN45 read with 0 errors
Continuous objective value is 22 - 0.030073 seconds
Cgl0004I processed model has 331 rows, 45 columns (45 integer (45 of which binary)) and 1034 elements
Coin0011I Conflict graph built in 0.001 seconds, density: 1.123%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Illegal instruction
$
The problem arises with any input file I tried, for simplicity I chose the STEIN45 example here, which is a test input file from the cbcbox project.
Even selecting generic mode explicitly did not help:
$ CBCBOX_BUILD=generic cbc stein45.mps -solve -quit
[cbcbox] CBCBOX_BUILD=generic
[cbcbox] binary : .venv/lib/python3.11/site-packages/cbcbox/cbc_dist/bin/cbc
[cbcbox] lib dir : .venv/lib/python3.11/site-packages/cbcbox/cbc_dist/lib
[cbcbox] libs : libCbc.so, libCbc.so.0, libCbc.so.0.0.0, libClp.so, libClp.so.0, libClp.so.0.0.0, libopenblas.so, libopenblas.so.0, libopenblasp-r0.3.31.so
Welcome to the CBC MILP Solver
Version: Devel (unstable)
Build Date: Mar 23 2026
command line - stein45.mps -solve -quit (default strategy 1)
At line 15 NAME STEIN45
At line 16 ROWS
At line 349 COLUMNS
At line 895 RHS
At line 1062 BOUNDS
At line 1108 ENDATA
Problem STEIN45 has 331 rows, 45 columns and 1034 elements
Coin0008I STEIN45 read with 0 errors
Continuous objective value is 22 - 0.019176 seconds
Cgl0004I processed model has 331 rows, 45 columns (45 integer (45 of which binary)) and 1034 elements
Coin0011I Conflict graph built in 0.001 seconds, density: 1.123%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Illegal instruction
$
On newer processors with AVX2 support the commands above work well in generic and also in avx2 mode.
Expected behavior
CBC completes without error also on older CPUs.
Desktop (please complete the following information):
- Operating System, version: Debian GNU/Linux 12
- Python version: 3.11
- Python-MIP version: 1.17
- cbcbox version: 2.929
Please let me know if you need any further information.
Additional context
When not specifying which executable shall be used, how can I see which one was selected?