Нарушение сегментации в контейнере сингулярности с помощью Matlab - PullRequest
0 голосов
/ 20 сентября 2018

Для развертывания в кластере я упаковываю академическое программное обеспечение, называемое рычагом, в контейнер Singularity.Он поставляется с предварительно собранными пакетами Matlab, которые запускаются из программного обеспечения.Я установил среду исполнения Matlab R2017b, рычаг и все зависимости внутри контейнера через файл рецепта.

Leverjs конвертирует и анализирует файлы изображений, которые находятся на домашнем пути, который автоматически привязан к контейнеру Singularity.

Но при запуске рычагов из контейнера и вызове предварительно скомпилированного кода Matlab Matlab падает с нарушением сегментации.Сам Леверджс работает на электроне.Как Matlab может вызвать segfault, если все зависимости и среда выполнения Matlab находятся в контейнере?

Файл рецепта: Bootstrap: docker От: ubuntu

%setup
  hostname -f > $SINGULARITY_ROOTFS/etc/build_host

  # or  #wget http://ssd.mathworks.com/supportfiles/downloads/R2017b/deployment_files/R2017b/installers/glnxa64/MCR_R2017b_glnxa64_installer.zip and unzip to location
    #mkdir matlab
    #unzip MCR_R2017b_glnxa64_installer.zip -d matlab

  cp -R /home/cewa/Downloads/matlab ${SINGULARITY_ROOTFS}/matlab

%post
    apt-get update 
apt-get -y upgrade
apt-get -y install git \
nodejs \
npm \
wget \
libgtk-3-dev \
libxss1 \
libgconf2-4 \
libnss3 \
libasound2-dev

# install git lfs
wget https://github.com/git-lfs/git-lfs/releases/download/v2.5.2/git-lfs-linux-amd64-v2.5.2.tar.gz
mkdir git-lfs
tar -C git-lfs -xf git-lfs-linux-amd64-v2.5.2.tar.gz
cd git-lfs
./install.sh
git lfs install

#install matlab dependency
cd ..
cd matlab
./install -mode silent -agreeToLicense yes

mkdir -p /opt/local
cd /opt/local
git clone --depth=1 https://git-bioimage.coe.drexel.edu/opensource/leverjs.git
git clone --depth=1 https://git-bioimage.coe.drexel.edu/opensource/leverUtilities.git
cd leverjs
npm update
npm run postinstall
chmod +x -R prebuilt/

## change path in CmdLoop.js to correct matlab path
cd leverjs
sed -i 's@/usr/local/MATLAB/R2017b/@/usr/local/MATLAB/MATLAB_Runtime/v93@' CmdLoop.js


##add cleanup
echo $PWD
cd /
echo $PWD
rm -rf git-lfs-linux-amd64-v2.5.2.tar.gz
rm -rf git-lfs
rm -rf matlab
apt clean
apt autoclean
apt autoremove

%runscript
cd /opt/local/leverjs
npm start

%apprun leverjs
cd /opt/local/leverjs
exec npm start


%apprun leverjs-server
exec node server.js --port=3000 "$@"

Дамп сбоя Matlab:

------------------------------------------------------------------------
       Segmentation violation detected at Thu Sep 20 15:29:40 2018
------------------------------------------------------------------------

Configuration:
  Crash Decoding      : Disabled - No sandbox or build area path
  Crash Mode          : continue (default)
  Default Encoding    : US-ASCII
  GNU C Library       : 2.27 stable
  Host Name           : X8DA3
  MATLAB Architecture : glnxa64
  MATLAB Root         : /usr/local/MATLAB/MATLAB_Runtime/v93
  MATLAB Version      : 9.3.0.713579 (R2017b)
  Operating System    : Linux 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64
  Processor ID        : x86 Family 6 Model 26 Stepping 5, GenuineIntel

Fault Count: 1


Abnormal termination:
Segmentation violation

Register State (from fault):
  RAX = 0000000000000000  RBX = 00007ffc5c5a6a30
  RCX = 0000000000000000  RDX = 0000000000000001
  RSP = 00007ffc5c5a6990  RBP = 00007ffc5c5a69b0
  RSI = 00000000000000d8  RDI = 00007ffc5c5a6a48

   R8 = 00007ffc5c5a6bf0   R9 = 0000000000000001
  R10 = 0000000000000004  R11 = 00007fdcbf45c070
  R12 = 0000000000000001  R13 = 0000000003905600
  R14 = 00007ffc5c5a6a48  R15 = 00007ffc5c5a6a30

  RIP = 00007fdcb6e64c9e  EFL = 0000000000010206

       CS = 0033   FS = 0000   GS = 0000

    Stack Trace (from fault):
    [  0] 0x00007fdcb6e64c9e                 bin/glnxa64/libmwfoundation_usm.so+00056478 _ZN10foundation3usm10management10thisthread16ContextActivatorC1INS0_5scope3MvmEEERNS1_7ContextIT_EE+00000014
    [  1] 0x00007fdcb5795c36                            bin/glnxa64/libmwmcr.so+00457782
    [  2] 0x00007fdcb57cc0df                            bin/glnxa64/libmwmcr.so+00680159 _ZN11mcrInstance27feval_on_interpreter_threadEPKciPP11mxArray_tagiS4_+00000063
    [  3] 0x00007fdcb57d0051                            bin/glnxa64/libmwmcr.so+00696401 _ZN11mcrInstance18CallMATLABFunctionEPKciPP11mxArray_tagiS4_PNSt15__exception_ptr13exception_ptrE+00000129
    [  4] 0x00007fdcb57d0293                            bin/glnxa64/libmwmcr.so+00696979 _ZN11mcrInstance10EvalStringERKSbIDsSt11cha
7b5788                            bin/glnxa64/libmwmcr.so+00587656
    [ 20] 0x00007fdcb57b5a93                            bin/glnxa64/libmwmcr.so+00588435 _Z12mcr_run_mainRKN5boost9function0IiEEbb+00000243
    [ 21] 0x00007fdca3b135a8                       bin/glnxa64/libmwMVMLocal.so+00427432
    [ 22] 0x00007fdcb546e38d                            bin/glnxa64/libmwmvm.so+02507661
    [ 23] 0x00007fdcb5a926bd                        bin/glnxa64/libmwmclbase.so+00386749 mclRunMain+00000989
    [ 24] 0x00007fdca478bf02                         bin/glnxa64/libmwmclmcr.so+02191106 mclStandaloneGenericMain+00001074
    [ 25] 0x00007fdcbff84bd2                   bin/glnxa64/libmwlaunchermain.so+00048082
    [ 26] 0x0000000000408b06           /opt/local/leverjs/prebuilt/matlabPollDB+00035590
    [ 27] 0x00007fdcbf3e6b97                    /lib/x86_64-linux-gnu/libc.so.6+00138135 __libc_start_main+00000231
    [ 28] 0x0000000000404544           /opt/local/leverjs/prebuilt/matlabPollDB+00017732
    [ 29] 0x0000000000000000                                   <unknown-module>+00000000


    If this problem is reproducible, please submit a Service Request via:
        http://www.mathworks.com/support/contact_us/

    A technical support engineer might contact you with further information.

    Thank you for your help.

Я надеюсь, что это не слишком не по теме.

Спасибо.

1 Ответ

0 голосов
/ 23 сентября 2018

markerjs - это программное обеспечение для визуализации, вам нужно запустить особенность с поддержкой библиотеки OpenGL.добавьте - nv опция

для % runcript section

$ singularity run --nv --nv  image_test.simg

для % apprun

$ singularity run --nv --app leverjs-server image_test.simg [args]

$ singularity run --nv --app leverjs image_test.simg

Теперь, если у вас есть проблемы с этой техникой, вы можете выполнить загрузку из образа докера, содержащего стандартные библиотеки GL без поставщика и добавить его к опции --nv

tryво-первых, если проблема все еще не решена, проблема больше не является незначительной для контейнеров с Singularity, вы должны предоставить более подробную информацию о том, какие команды вы используете для запуска контейнера.

также эта строка из аварийного дампа

Декодирование сбоя: отключено - нет пути к песочнице или области построения

говорит о том, что Matlab не может найти исходные файлы.

...