Skip to content

Invalid instruction error when using HiGHS/HiPO in docker container on MacOS #112

Open

Description

@mwiebusch-urbanchain

My optimisation crashes with exit code 132 when running in a docker container on MacOS. The Macbook's chip is 'Apple M5 Pro', and I installed highspy==1.15.1 and highspy-extras==1.15.1. The issue seems to be with the bundled version of libopenblas. If I install openblas myself and preload it with LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libopenblas.so.0 python ... then everything works.

Here is the gdb output from the crash:

Thread 1 "python" received signal SIGILL, Illegal instruction.
0x0000fffe628d4f88 in dtrsm_iunucopy () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libopenblas.so
#0  0x0000fffe628d4f88 in dtrsm_iunucopy () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libopenblas.so
#1  0x0000fffe627bd9d4 in dtrsm_LTUU () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libopenblas.so
#2  0x0000fffe626bde3c in cblas_dtrsm () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libopenblas.so
#3  0x0000fffe63577fc8 in hipo::denseFactFH(char, int, int, int, double*, double*, int const*, double, hipo::Regul const&, double*, int*, double*, bool, hipo::DataCollector&) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#4  0x0000fffe635785e8 in hipo::HybridHybridFormatHandler::denseFactorise(double) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#5  0x0000fffe63578ed4 in hipo::Factorise::processSupernode(int) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#6  0x0000fffe63579548 in hipo::Factorise::run(hipo::Numeric&) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#7  0x0000fffe63579d4c in hipo::FHsolver::factorise(hipo::Symbolic const&, std::vector<int, std::allocator<int> > const&, std::vector<int, std::allocator<int> > const&, std::vector<double, std::allocator<double> > const&) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#8  0x0000fffe6355ea10 in hipo::FactorHiGHSSolver::factorNE(HighsSparseMatrix const&, std::vector<double, std::allocator<double> > const&) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#9  0x0000fffe635664b0 in hipo::Solver::startingPoint() () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#10 0x0000fffe63569ecc in hipo::Solver::initialise() () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#11 0x0000fffe63569f48 in hipo::Solver::runIpm() () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#12 0x0000fffe6356a184 in hipo::Solver::solve() () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#13 0x0000fffe63318a98 in solveLpHipo(HighsOptions const&, HighsTimer&, HighsLp const&, HighsBasis&, HighsSolution&, HighsModelStatus&, HighsInfo&, HighsCallback&) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#14 0x0000fffe63392d54 in solveLp(HighsLpSolverObject&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#15 0x0000fffe6333fd74 in Highs::callSolveLp(HighsLp&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >) () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#16 0x0000fffe63331978 in Highs::calledOptimizeModel()::{lambda(HighsLp&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double&)#1}::operator()(HighsLp&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double&) const () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#17 0x0000fffe63336edc in Highs::calledOptimizeModel() () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#18 0x0000fffe63337b90 in Highs::optimizeModel() () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#19 0x0000fffe63337d1c in Highs::run() () from /usr/local/lib/python3.12/site-packages/highsbox/highs_dist/lib/libhighs.so
#20 0x0000ffff03cc8cb0 in POIHighsModel::optimize() () from /usr/local/lib/python3.12/site-packages/pyoptinterface/_src/highs_model_ext.abi3.so
#21 0x0000ffff03caeb10 in ?? () from /usr/local/lib/python3.12/site-packages/pyoptinterface/_src/highs_model_ext.abi3.so
#22 0x0000ffff03cb7a68 in ?? () from /usr/local/lib/python3.12/site-packages/pyoptinterface/_src/highs_model_ext.abi3.so
#23 0x0000ffff422c6d10 in ?? () from /usr/local/lib/python3.12/site-packages/pyoptinterface/_src/core_ext.abi3.so
#24 0x0000ffff85b3c5f4 in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<nanobind.nb_bound_method at remote 0xffff742896c0>, tstate=0xffff85f4cc78 <_PyRuntime+459672>) at ./Include/internal/pycore_call.h:92
#25 PyObject_Vectorcall (callable=<nanobind.nb_bound_method at remote 0xffff742896c0>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at Objects/call.c:325
#26 0x0000ffff85b243e0 in _PyEval_EvalFrameDefault (tstate=0x0, frame=0xffff85f86520, throwflag=-324333552) at Python/bytecodes.c:2706
#27 0x0000ffff85b93c04 in PyEval_EvalCode (co=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': 'csub', '__loader__': <SourceFileLoader(name='csub.execute', path='/root/src/csub/execute.py') at remote 0xffff854b4890>, '__spec__': <ModuleSpec(name='csub.execute', loader=<...>, origin='/root/src/csub/execute.py', loader_state=None, submodule_search_locations=None, _uninitialized_submodules=[], _set_fileattr=True, _cached='/root/src/csub/__pycache__/execute.cpython-312.pyc') at remote 0xffff854b48c0>, '__annotations__': {}, '__builtins__': <module at remote 0xffff85621940>, '__file__': '/root/src/csub/execute.py', '__cached__': '/root/src/csub/__pycache__/execute.cpython-312.pyc', 'os': <module at remote 0xffff85676610>, 'sys': <module at remote 0xffff8561be70>, 'importlib': <module at remote 0xffff85458590>, 'copy': <module at remote 0xffff854cc9f0>, 'dt': <module at remote 0xffff854cef70>, 'read_pipelines': <function at remote 0xffff853b5080>, 'read_artifacts': <function at remote 0xffff853b56c0>, 'create_execution_handler': <function at remote 0xf...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': 'csub', '__loader__': <SourceFileLoader(name='csub.execute', path='/root/src/csub/execute.py') at remote 0xffff854b4890>, '__spec__': <ModuleSpec(name='csub.execute', loader=<...>, origin='/root/src/csub/execute.py', loader_state=None, submodule_search_locations=None, _uninitialized_submodules=[], _set_fileattr=True, _cached='/root/src/csub/__pycache__/execute.cpython-312.pyc') at remote 0xffff854b48c0>, '__annotations__': {}, '__builtins__': <module at remote 0xffff85621940>, '__file__': '/root/src/csub/execute.py', '__cached__': '/root/src/csub/__pycache__/execute.cpython-312.pyc', 'os': <module at remote 0xffff85676610>, 'sys': <module at remote 0xffff8561be70>, 'importlib': <module at remote 0xffff85458590>, 'copy': <module at remote 0xffff854cc9f0>, 'dt': <module at remote 0xffff854cef70>, 'read_pipelines': <function at remote 0xffff853b5080>, 'read_artifacts': <function at remote 0xffff853b56c0>, 'create_execution_handler': <function at remote 0xf...(truncated)) at Python/ceval.c:578
#28 0x0000ffff85bc1170 in builtin_exec_impl (module=<optimized out>, closure=<optimized out>, locals={'__name__': '__main__', '__doc__': None, '__package__': 'csub', '__loader__': <SourceFileLoader(name='csub.execute', path='/root/src/csub/execute.py') at remote 0xffff854b4890>, '__spec__': <ModuleSpec(name='csub.execute', loader=<...>, origin='/root/src/csub/execute.py', loader_state=None, submodule_search_locations=None, _uninitialized_submodules=[], _set_fileattr=True, _cached='/root/src/csub/__pycache__/execute.cpython-312.pyc') at remote 0xffff854b48c0>, '__annotations__': {}, '__builtins__': <module at remote 0xffff85621940>, '__file__': '/root/src/csub/execute.py', '__cached__': '/root/src/csub/__pycache__/execute.cpython-312.pyc', 'os': <module at remote 0xffff85676610>, 'sys': <module at remote 0xffff8561be70>, 'importlib': <module at remote 0xffff85458590>, 'copy': <module at remote 0xffff854cc9f0>, 'dt': <module at remote 0xffff854cef70>, 'read_pipelines': <function at remote 0xffff853b5080>, 'read_artifacts': <function at remote 0xffff853b56c0>, 'create_execution_handler': <function at remote 0xf...(truncated), globals={'__name__': '__main__', '__doc__': None, '__package__': 'csub', '__loader__': <SourceFileLoader(name='csub.execute', path='/root/src/csub/execute.py') at remote 0xffff854b4890>, '__spec__': <ModuleSpec(name='csub.execute', loader=<...>, origin='/root/src/csub/execute.py', loader_state=None, submodule_search_locations=None, _uninitialized_submodules=[], _set_fileattr=True, _cached='/root/src/csub/__pycache__/execute.cpython-312.pyc') at remote 0xffff854b48c0>, '__annotations__': {}, '__builtins__': <module at remote 0xffff85621940>, '__file__': '/root/src/csub/execute.py', '__cached__': '/root/src/csub/__pycache__/execute.cpython-312.pyc', 'os': <module at remote 0xffff85676610>, 'sys': <module at remote 0xffff8561be70>, 'importlib': <module at remote 0xffff85458590>, 'copy': <module at remote 0xffff854cc9f0>, 'dt': <module at remote 0xffff854cef70>, 'read_pipelines': <function at remote 0xffff853b5080>, 'read_artifacts': <function at remote 0xffff853b56c0>, 'create_execution_handler': <function at remote 0xf...(truncated), source=<code at remote 0xaaaaebb13040>) at Python/bltinmodule.c:1096
#29 builtin_exec (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:586
#30 0x0000ffff85b94970 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=<built-in method exec of module object at remote 0xffff85621940>, args=0xffff85f86180, nargsf=<optimized out>, kwnames=0x0) at Objects/methodobject.c:438
#31 0x0000ffff85b3c5f4 in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<built-in method exec of module object at remote 0xffff85621940>, tstate=0xffff85f4cc78 <_PyRuntime+459672>) at ./Include/internal/pycore_call.h:92
#32 PyObject_Vectorcall (callable=<built-in method exec of module object at remote 0xffff85621940>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at Objects/call.c:325
#33 0x0000ffff85b243e0 in _PyEval_EvalFrameDefault (tstate=0x2, frame=0xffff85f86190, throwflag=-324333552) at Python/bytecodes.c:2706
#34 0x0000ffff85bdd8e8 in pymain_run_module (modname=<optimized out>, set_argv0=set_argv0@entry=1) at Modules/main.c:300
#35 0x0000ffff85bdce94 in pymain_run_python (exitcode=0xffffcdce3524) at Modules/main.c:623
#36 Py_RunMain () at Modules/main.c:709
#37 0x0000ffff85b77e38 in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at Modules/main.c:763
#38 0x0000ffff857b7744 in __libc_start_call_main (main=main@entry=0xaaaac91b0960 <main>, argc=argc@entry=5, argv=argv@entry=0xffffcdce37b8) at ../sysdeps/nptl/libc_start_call_main.h:58
#39 0x0000ffff857b7818 in __libc_start_main_impl (main=0xaaaac91b0960 <main>, argc=5, argv=0xffffcdce37b8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>) at ../csu/libc-start.c:360
#40 0x0000aaaac91b0870 in _start ()
=> 0xfffe628d4f88 <dtrsm_iunucopy+2152>:        addvl   x1, x2, #1

Activity

  1. mwiebusch-urbanchain commented on Oct 19, 2026

    @mwiebusch-urbanchain
    Author

    The docker image is based on python:3.12.3 from docker.io, btw.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions