Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bonmin Seg Fault on Raspberry Pi (buster) #32

Open
patrick984 opened this issue May 23, 2022 · 1 comment
Open

Bonmin Seg Fault on Raspberry Pi (buster) #32

patrick984 opened this issue May 23, 2022 · 1 comment

Comments

@patrick984
Copy link

I am trying to compile and use Bonmin on a Raspberry Pi (CM3) running Raspbian buster.

Bonmin compiles using coinbrew and the tests appear to complete successfully, however when Bonmin is run with a .nl file created with pyomo, it terminates with a segmentation fault immediately:

./bonmin/bin/bonmin /tmp/tmpurji9lq1.pyomo.nl max_iter=15000 bonmin.algorithm=B-Hyb bonmin.variable_selection=most-fractional
Bonmin 1.8.8 using Cbc 2.10.4 and Ipopt 3.12.12
max_iter=15000
bonmin.algorithm=B-Hyb
bonmin.variable_selection=most-fractional

Segmentation fault

GDB indicates the fault is occurring in ewalk.constprop () from /home/pi/bonmin/lib/libcoinasl.so.1.

However, when compiled with --enable-debug Bonmin does not crash.

GDB Output

gdb ~/bonmin/bin/bonmin
GNU gdb (Raspbian 8.2.1-2) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/pi/bonmin/bin/bonmin...(no debugging symbols found)...done.
(gdb) run /tmp/tmpurji9lq1.pyomo.nl max_iter=15000 bonmin.algorithm=B-Hyb bonmin.variable_selection=most-fractional
Starting program: /home/pi/bonmin/bin/bonmin /tmp/tmpurji9lq1.pyomo.nl max_iter=15000 bonmin.algorithm=B-Hyb bonmin.variable_selection=most-fractional
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[New Thread 0x75258440 (LWP 13627)]
[New Thread 0x74a57440 (LWP 13628)]
[New Thread 0x72256440 (LWP 13629)]
Bonmin 1.8.8 using Cbc 2.10.4 and Ipopt 3.12.12
max_iter=15000
bonmin.algorithm=B-Hyb
bonmin.variable_selection=most-fractional


Thread 1 "bonmin" received signal SIGSEGV, Segmentation fault.
0x75db3178 in ewalk.constprop () from /home/pi/bonmin/lib/libcoinasl.so.1
(gdb) bt
#0  0x75db3178 in ewalk.constprop () from /home/pi/bonmin/lib/libcoinasl.so.1
#1  0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

Compile Log

./coinbrew build --off-line -j 4 [email protected] --prefix=$HOME/bonmin --skip-update --skip='ThirdParty/HSL ThirdParty/Lapack ThirdParty/Blas' --with-openblas --with-lapack-lflags="-llapack -lopenblas"
Welcome to the COIN-OR fetch and build utility, version 2

To use the legacy version of coinbrew, '$ wget https://raw.githubusercontent.com/coin-or/coinbrew/v1.0/coinbrew'
For help, run script with --help or see https://coin-or.github.io/coinbrew
Please report issues at https://github.com/coin-or/coinbrew
Detailed build documentation at https://coin-or.github.io

Package will be built in /home/pi/src/coinbrew/build

./coinbrew: line 1855: latest_release: unbound variable
./coinbrew: line 1564: wait_for: No record of process 31367

It appears that a main project version has been specified, but
fetching was not requested. Build will proceed with current version.

################################################
### Building version 1.8.8
### with existing versions of dependencies.
### Ctrl-c and run 'fetch' to switch versions
### or to ensure correct dependencies
################################################

Caching configuration options...
--with-lapack-lflags=-llapack -lopenblas
--with-openblas

Installation is done automatically following build and test of each project.

Installation directory is writable.

Package will be installed to /home/pi/bonmin

Disabling uninstalled packages

##################################################
### Skipping ThirdParty/Blas
##################################################


##################################################
### Skipping ThirdParty/Lapack
##################################################


##################################################
### Configuring ThirdParty/ASL 1.4.2
##################################################


##################################################
### Building ThirdParty/ASL 1.4.2
##################################################


##################################################
### Running ThirdParty/ASL unit test
##################################################


##################################################
### Installing ThirdParty/ASL 1.4.2
##################################################


##################################################
### Skipping ThirdParty/FilterSQP
##################################################


##################################################
### Configuring ThirdParty/Mumps 1.6.2
##################################################

configure: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: dlfcn.h: proceeding with the compiler's result

##################################################
### Building ThirdParty/Mumps 1.6.2
##################################################


##################################################
### Running ThirdParty/Mumps unit test
##################################################


##################################################
### Installing ThirdParty/Mumps 1.6.2
##################################################


##################################################
### Configuring ThirdParty/Metis 1.3.9
##################################################


##################################################
### Building ThirdParty/Metis 1.3.9
##################################################


##################################################
### Running ThirdParty/Metis unit test
##################################################


##################################################
### Installing ThirdParty/Metis 1.3.9
##################################################


##################################################
### Configuring Data/Sample 1.2.12
##################################################


##################################################
### Building Data/Sample 1.2.12
##################################################


##################################################
### Running Data/Sample unit test
##################################################


##################################################
### Installing Data/Sample 1.2.12
##################################################


##################################################
### Configuring CoinUtils 2.11.4
##################################################


##################################################
### Building CoinUtils 2.11.4
##################################################


##################################################
### Running CoinUtils unit test
##################################################


##################################################
### Installing CoinUtils 2.11.4
##################################################


##################################################
### Configuring Osi 0.108.6
##################################################

configure: WARNING: No solver available, examples will not work.

##################################################
### Building Osi 0.108.6
##################################################


##################################################
### Running Osi unit test
##################################################


##################################################
### Installing Osi 0.108.6
##################################################


##################################################
### Configuring Clp 1.17.4
##################################################


##################################################
### Building Clp 1.17.4
##################################################


##################################################
### Running Clp unit test
##################################################


##################################################
### Installing Clp 1.17.4
##################################################


##################################################
### Configuring Cgl 0.60.3
##################################################


##################################################
### Building Cgl 0.60.3
##################################################


##################################################
### Running Cgl unit test
##################################################


##################################################
### Installing Cgl 0.60.3
##################################################


##################################################
### Configuring Cbc 2.10.4
##################################################


##################################################
### Building Cbc 2.10.4
##################################################


##################################################
### Running Cbc unit test
##################################################


##################################################
### Installing Cbc 2.10.4
##################################################


##################################################
### Configuring Ipopt 3.12.12
##################################################


##################################################
### Building Ipopt 3.12.12
##################################################


##################################################
### Running Ipopt unit test
##################################################


##################################################
### Installing Ipopt 3.12.12
##################################################


##################################################
### Configuring bonmin 1.8.8
##################################################


##################################################
### Building bonmin 1.8.8
##################################################


##################################################
### Running bonmin unit test
##################################################


##################################################
### Installing bonmin 1.8.8
##################################################


Install completed. If executing any of the installed
binaries results in an error that shared libraries cannot
be found, you may need to
  - add 'export LD_LIBRARY_PATH=/home/pi/bonmin/lib' to your ~/.bashrc (Linux)
  - add 'export DYLD_LIBRARY_PATH=/home/pi/bonmin/lib' to ~/.bashrc (OS X)

Additional Info

Without --enable-debug

file ~/bonmin/bin/bonmin
/home/pi/bonmin/bin/bonmin: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=3356d0e534507fbd8c5fe4b28b72e6052af09b05, not stripped
ldd ~/bonmin/bin/bonmin
 linux-vdso.so.1 (0x7ef50000)
 /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0x76f7f000)
 libbonminampl.so.4 => /home/pi/bonmin/lib/libbonminampl.so.4 (0x76f4e000)
 libbonmin.so.4 => /home/pi/bonmin/lib/libbonmin.so.4 (0x76e5e000)
 libCbcSolver.so.3 => /home/pi/bonmin/lib/libCbcSolver.so.3 (0x76d7e000)
 libCbc.so.3 => /home/pi/bonmin/lib/libCbc.so.3 (0x76c93000)
 libCgl.so.1 => /home/pi/bonmin/lib/libCgl.so.1 (0x76ba2000)
 libOsiClp.so.1 => /home/pi/bonmin/lib/libOsiClp.so.1 (0x76b57000)
 libClpSolver.so.1 => /home/pi/bonmin/lib/libClpSolver.so.1 (0x76af1000)
 libClp.so.1 => /home/pi/bonmin/lib/libClp.so.1 (0x7698d000)
 libOsi.so.1 => /home/pi/bonmin/lib/libOsi.so.1 (0x7693b000)
 libCoinUtils.so.3 => /home/pi/bonmin/lib/libCoinUtils.so.3 (0x76837000)
 libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0x76802000)
 libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x767da000)
 libipoptamplinterface.so.1 => /home/pi/bonmin/lib/libipoptamplinterface.so.1 (0x767b6000)
 libipopt.so.1 => /home/pi/bonmin/lib/libipopt.so.1 (0x7658e000)
 liblapack.so.3 => /lib/arm-linux-gnueabihf/liblapack.so.3 (0x7604a000)
 libcoinmumps.so.1 => /home/pi/bonmin/lib/libcoinmumps.so.1 (0x75ef3000)
 libblas.so.3 => /lib/arm-linux-gnueabihf/libblas.so.3 (0x75ea4000)
 libgfortran.so.5 => /lib/arm-linux-gnueabihf/libgfortran.so.5 (0x75dcb000)
 libcoinasl.so.1 => /home/pi/bonmin/lib/libcoinasl.so.1 (0x75d3a000)
 libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x75d27000)
 libstdc++.so.6 => /lib/arm-linux-gnueabihf/libstdc++.so.6 (0x75be0000)
 libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x75b5e000)
 libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x75b31000)
 libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x759e3000)
 /lib/ld-linux-armhf.so.3 (0x76f94000)
 libopenblas.so.0 => /lib/arm-linux-gnueabihf/libopenblas.so.0 (0x75269000)
 libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x7523f000)

With --enable-debug

file ~/bonmin/bin/bonmin
/home/pi/bonmin/bin/bonmin: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=10cbb4b0e065f0a92ae10ae061af73c6e7e556d1, with debug_info, not stripped
ldd ~/bonmin/bin/bonmin
 linux-vdso.so.1 (0x7eca4000)
 /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0x76efd000)
 libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0x76ec8000)
 libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x76ea0000)
 liblapack.so.3 => /lib/arm-linux-gnueabihf/liblapack.so.3 (0x7695c000)
 libblas.so.3 => /lib/arm-linux-gnueabihf/libblas.so.3 (0x7690d000)
 libgfortran.so.5 => /lib/arm-linux-gnueabihf/libgfortran.so.5 (0x76834000)
 libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76821000)
 libstdc++.so.6 => /lib/arm-linux-gnueabihf/libstdc++.so.6 (0x766da000)
 libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76658000)
 libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x7662b000)
 libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x764dd000)
 /lib/ld-linux-armhf.so.3 (0x76f12000)
 libopenblas.so.0 => /lib/arm-linux-gnueabihf/libopenblas.so.0 (0x75d63000)
 libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x75d39000)
@svigerske
Copy link
Member

Looks like a problem in parsing the NL file by ASL, probably related to differences on ARM (endianess?). Maybe try bonmin@master instead of 1.8.8. With master, you should get a more recent version of the buildsystem for ASL, though we haven't updated the version of ASL for a while.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants