Нарушение сегментации в контейнере Singularity с помощью Matlab

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

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

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

Файл рецепта: Bootstrap: докер От: 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.

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

Спасибо.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
289
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

для раздела % runscript

$ 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

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

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

Crash Decoding : Disabled - No sandbox or build area path

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

Спасибо. Это была проблема с библиотекой!

cwlkr 25.09.2018 15:21

Другие вопросы по теме