I am attempting to build the MXNet library for an embedded ARM system but am having some issues validating the build.
I built the library with the following options as I was trying to build a minimal footprint library. I will not be doing any image recognition or GPU.
-DUSE_CUDA=OFF -DUSE_MKL_IF_AVAILABLE=OFF -DUSE_MKLDNN=OFF -DUSE_OPENCV=OFF -DUSE_OPENMP=OFF -DUSE_SSE=OFF -DUSE_F16C=OFF -DUSE_GPERFTOOLS=0 -DUSE_JEMALLOC=0
I built both the library and the python bindings using Buildroot but the library seg faults when trying to import the MXNet module into Python.
I hooked up GDB to Python to better understand what was seg faulting and got the following stack trace:
$ export MXNET_LIBRARY_PATH=/usr/lib/libmxnet.so && gdb python
Python 2.7.15 (default, Jul 31 2018, 19:39:18)
[GCC 8.1.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mxnet
Program received signal SIGSEGV, Segmentation fault.
0x76c05ab8 in __cxa_thread_atexit_impl () from /lib/libc.so.6
(gdb) backtrace
#0 0x76c05ab8 in __cxa_thread_atexit_impl () from /lib/libc.so.6
#1 0x757ac398 in NNListAllOpNames () from /usr/lib/libmxnet.so
#2 0x76a8962c in ffi_call_VFP () from /usr/lib/libffi.so.6
#3 0x76a89e94 in ffi_call () from /usr/lib/libffi.so.6
#4 0x76aabeb4 in _ctypes_callproc ()
from /usr/lib/python2.7/lib-dynload/_ctypes.so
#5 0x76aa2918 in ?? () from /usr/lib/python2.7/lib-dynload/_ctypes.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
I don’t know if I missed some options when building libc or if I need to disable some options when building MXNet but was wondering if anyone in the community had thoughts/insights into what might be going wrong.