Как отладить проблему драйвера mesa с Xvfb, безголовый gl при упаковке для AWS Lambda - PullRequest
0 голосов
/ 05 февраля 2020

Я застрял при отладке упаковки пользовательского Xvfb, созданного с помощью headless-gl (Three JS и WebGL) для AWS Lambda. Возможно, мне не хватает некоторых сложностей установки драйверов или просто необходимой библиотеки, и я не могу получить полезные журналы.

Я пытаюсь запустить узел с ThreeJS / WebGL в автономной среде. Цель этого - упаковать все это в AWS лямбда-функцию. В настоящее время я тестирую в Docker с чистым образом lambci / lambda: build-nodejs12.x (который должен напоминать amazon linux 2), и все работает в чистой среде, в которой двоичные файлы совместно используются в /var/task/bin и /var/task/lib, если я запускаю :

yum install -y mesa-dri-drivers

до запуска:

xvfb-run --server-args "-ac -screen 0, 1024x1024x24" node_modules/.bin/coffee myscript.coffee -i ./test.png -o ./out.png

Я построил Xvfb, аналогично https://github.com/nisaacson/aws-lambda-xvfb (еще несколько шагов из-за отсутствующих зависимостей и более поздних версий всего), и я знаю, что мой кофейный скрипт запускается через узел и все работает. Однако, без установки драйверов mesa, все начинается с go неправильно. Я попытался упаковать их в lib через yumdownloader, поделившись ими со средой, выполнив следующие инструкции: https://aws.amazon.com/premiumsupport/knowledge-center/lambda-linux-binary-package/ и здесь: { ссылка } и добавил каталог со скопированным общие двоичные файлы перед существующим LD_LIBRARY_PATH.

Несмотря на всю эту упаковку, я получаю сообщение об ошибке (с помощью команды xvfb-run):

THREE.WebGLRenderer: TypeError: _canvas.getContext is not a function
events.js:200
      throw er; // Unhandled 'error' event
      ^

TypeError: Cannot read property 'getExtension' of undefined

Это восходит к моему сценарий кофе:

gl = require('gl')(width, height) 

где gl равно null в нерабочем случае. Я думаю, что это просто означает, что не может быть создан контекст WebGL. Чего мне не хватает, так это почему. Я предполагаю, что библиотека отсутствует, но я не знаю, как узнать, какая.

При работе с:

xvfb-run -e myLog.txt …

Я не получаю ничего полезного, Xvfb, кажется, начните нормально, нет записей, которые я не получаю в рабочем сценарии.

Вопросы:

  1. Нужно ли что-то делать по-другому при упаковке установки драйвера ?
  2. Есть ли способ просмотреть дополнительную информацию журнала из Xvfb?

Обновление:

Установка glxinfo и запуск:

xvfb-run -s "-screen 0 640x480x24" glxinfo

Приводит к:

name of display: :99
Error: couldn't find RGB GLX visual or fbconfig

Пока он работает в системе с установленными через yum драйверами mesa. Все, что я мог найти в Интернете, это то, что сообщение выше указывает на проблему с драйверами, но я не вижу, как это исправить. Я попытался запустить strace и inotifywait, чтобы увидеть, какие библиотеки доступны в рабочем / нерабочем случае, он показал мне пару, которая могла отсутствовать, но копирование их не помогло.

...