Segfault в glGetError() при работе с программным рендерером Mesa под Docker?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Segfault в glGetError() при работе с программным рендерером Mesa под Docker?

Сообщение Anonymous »

Мне не удалось запустить приложение OpenGL в контейнере Docker с Ubuntu. Ниже представлена ​​минимальная копия, состоящая из нескольких файлов. Вот структура папок:

Код: Выделить всё

\CMakeLists.txt
\conanfile.txt
\Dockerfile
\entrypoint.sh
\main.cpp
CMakeLists.txt:

Код: Выделить всё

cmake_minimum_required(VERSION 3.8)

set(CMAKE_CXX_STANDARD 14)

project(glcrash)

file(GLOB_RECURSE COMPILABLE_FILES CONFIGURE_DEPENDS main.cpp)

find_package(GLEW REQUIRED)
find_package(glfw3 REQUIRED)

add_executable(${PROJECT_NAME} ${COMPILABLE_FILES})

target_link_libraries(${PROJECT_NAME}
GLEW::GLEW
glfw
)
conanfile.txt:

Код: Выделить всё

[requires]
glew/2.2.0
glfw/3.3.8

[generators]
CMakeDeps
CMakeToolchain

[layout]
cmake_layout
Dockerfile:

Код: Выделить всё

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y \
build-essential \
cmake \
python3-pip \
pkg-config # for conan to install all packages

RUN pip3 install conan && conan profile detect

# BEGIN X-SERVER IN DOCKER CONTAINER --------------------------------
# Setup mesa drivers
#RUN add-apt-repository ppa:kisak/kisak-mesa # This will switch to the latest Mesa version available
RUN apt update && apt install -y \
libegl-mesa0 \
libegl1-mesa \
libegl1-mesa-dev \
libgl1-mesa-dev \
libglu1-mesa \
libglu1-mesa-dev \
libgl1-mesa-dri \
libgl1-mesa-glx \
libglapi-mesa \
libgles2-mesa \
libgles2-mesa-dev \
libglw1-mesa \
libglw1-mesa-dev \
libglx-mesa0 \
libosmesa6 \
libosmesa6-dev \
libfreetype6-dev \
mesa-utils \
xdotool \
mesa-common-dev \
libglib2.0-0

# Setup xvfb
RUN DEBIAN_FRONTEND=noninteractive \
apt install -y \
xvfb \
x11-xkb-utils \
xfonts-100dpi \
xfonts-75dpi \
xfonts-scalable \
xfonts-cyrillic \
xorg \
openbox \
xserver-xorg-core

# Setup our environment variables.
ENV XVFB_WHD="1920x1080x24"\
DISPLAY=":99" \
LIBGL_DEBUG="verbose" \
LIBGL_ALWAYS_SOFTWARE="1" \
MESA_DEBUG="1" \
GALLIUM_DRIVER="llvmpipe" \
LP_NO_RAST="false" \
LP_DEBUG="" \
LP_PERF="" \
LP_NUM_THREADS=""

# Copy our entrypoint into the container.
COPY ./entrypoint.sh /
RUN chmod +x /entrypoint.sh

# Set the default command.
ENTRYPOINT ["/entrypoint.sh"]

# END X-SERVER IN DOCKER CONTAINER --------------------------------

ADD * /opt/glcrash/
RUN cd /opt/glcrash && mkdir build && cd build \
&& conan install .. --build missing --output-folder=. -s build_type=Debug -c tools.system.package_manager:mode=install \
&& cmake .. -DCMAKE_TOOLCHAIN_FILE=build/Debug/generators/conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Debug \
&& cmake --build .
entrypoint.sh:

Код: Выделить всё

#!/bin/sh

if [ $# -eq 0 ]; then
echo "No command was given to run, exiting."
exit 1
else
# Start Xvfb
echo "Starting Xvfb."
Xvfb ${DISPLAY} -ac -screen 0 "$XVFB_WHD" -nolisten tcp &
Xvfb_pid="$!"

echo -n "Waiting for Xvfb to be ready... "
while ! xdpyinfo -display ${DISPLAY} > /dev/null 2>&1; do
sleep 0.1
done
echo "done."

"$@"
returnValue=$?

echo -n "Stopping Xvfb...  "
while kill -n 0 $Xvfb_pid > /dev/null 2>&1; do
wait
done
echo "done."

#echo "Removing Xvfb temporary files."
rm -rf /tmp/.X*

exit $returnValue
fi
main.cpp

Код: Выделить всё

#include 
#include 

#include 

int main(int argc, char** argv)
{
if (!glfwInit())
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78299170/segfault-in-glgeterror-when-running-with-mesa-software-renderer-under-docker[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Что не так с моим рендерером сетки в OpenTK? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Вспышка нестилизованного контента (FOUC) только в Firefox? Является ли FF медленным рендерером?
    Anonymous » » в форуме CSS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Вспышка нестилизованного контента (FOUC) только в Firefox? Является ли FF медленным рендерером?
    Anonymous » » в форуме CSS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как взаимодействовать с рендерером с новой кнопки?
    Anonymous » » в форуме Javascript
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • MESA-INTEL: предупреждение: поддержка Ivy Bridge Vulkan неполная [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    75 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»