Skip to content

CBC (of cbcbox) crashes with SIGILL on Linux #420

@kbrix2000

Description

@kbrix2000

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions