Как плохое вызовы OpenGL вызывают сбои всей системы?

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

После вызова функций OpenGL с неправильными данными / аргументами вся система зависает, и я даже не могу переключиться на консоль Ctrl Alt F1 .

Это меня разочаровывает, потому что Linux должен быть стабильным программным обеспечением / ОС. Тогда почему ошибка в программе OpenGL может привести к сбою всей системы?

2 Solutions collect form web for “Как плохое вызовы OpenGL вызывают сбои всей системы?”

Учитывая «монолитный» nautre ядра Linux, ошибка в коде, который работает на самом высоком уровне привилегий CPU, обычно называемом «kernel-mode», может привести к сбою всей системы.

Для этого есть три причины:

  • Такой код может напрямую обращаться к памяти любого другого кода. Таким образом, такой код может привести к повреждению самого ядра, запуску драйверов и т. Д.
  • Такой код может напрямую обращаться к устройствам ввода-вывода. Вполне возможно неверно настроить или установить неправильные биты в неправильные моменты времени на устройствах ввода / вывода таким образом, чтобы вся система блокировалась. Не-багги-драйверы устройств не позволят коду пользователя делать что-либо на аппаратном обеспечении, которое может вызвать неустойчивую систему, но просто глючные, бета-версии или плохо написанные (или неправильные) драйверы.
  • Код, который сталкивается с проблемой или исключением, с которым он не может справиться, не имеет более высокого уровня для «броска». Таким образом, исключение ядра приведет к сбою системы.

Поэтому я не знаю, в какой степени OpenGL работает в ядре или с графическим драйвером, но я надеюсь, что это поможет.

Современные среды пользовательского интерфейса (Windows, OSX, Linux, mobile и т. Д.) В значительной степени зависят от графического конвейера для производительности.

Системы имеют один графический конвейер. Все графические программы (рабочий стол, браузер, игры и т. Д.) – это отдельные потоки, которые должны использовать этот единый графический контекст.

Это создает необходимые условия для многопоточных задач. Потоки могут затуманиваться, жить, мчаться и т. Д.

Скорее всего, ваш поток не «красиво играет» с потоком графической графики, а блокируется. Возможно, ждет ресурс, который больше не доступен (правильно ли вы освобождаете все ресурсы?)

OpenGL очень агрессивно развивается и доводит аппаратное обеспечение до предела. Вы можете обнаружить, что ошибка не возникает на другом оборудовании.

Если, однако, вся ваша система отключается, то, скорее всего, фактический чипсет трубопровода перегревается и / или перенапрягает. В большинстве аппаратов есть датчики, которые сокращают мощность, если возникают вредные всплески нагрузки. Производители загружают тестовое оборудование и соответственно устанавливают отсечки.

** Отдельные графические конвейеры заменяются несколькими конвейерами (которые могут «владеть» отдельными небольшими областями экрана). Это то, что касается Vulkan OpenGL, и требует специальных наборов микросхем GPU.

введите описание изображения здесь

  • Несколько XkbOptions в xorg.conf
  • Что ждет Linux при переключении с Xorg на текстовую консоль?
  • Могу ли я переместить запущенное приложение на другой X-сервер?
  • Как сделать работу Compose в приложениях GTK и Qt?
  • Диспетчеру дисплея mdm не удается загрузить среду рабочего стола
  • xmodmap для комбинации клавиш - как переключить поведение Fn?
  • Не удается отобразить с удаленного хоста при запуске X, но при запуске xinit
  • XServer: активные сеансы xserver в фоновом режиме
  • Программный способ установки раскладки клавиатуры xkb
  • HDMI на драйвере Nouveau - глючный
  • Возможно ли иметь xrandr в разных режимах на основе рабочего пространства?
  • Почему монитор остается включенным, когда включен DPMS?
  • Interesting Posts

    команда `read` не работает в Makefile

    Усилить тихие проходы в mp3-файле

    portsentry и IPTables при постоянной перезагрузке, но не уверен, почему

    genkernel all: fstack-protector не поддерживается компилятором

    Создание электронной почты, которая может вызвать скрипт

    Должен ли я создавать, если мой собственный пользователь с меньшими правами на сервере (Digit. Ocean)?

    Каков правильный способ повторного использования этого однострочного лайнера?

    Выбор случайного файла из каждой подпапки

    почему / dev / dsp исчез из SUSE

    Есть ли обычное место в Unix для хранения загруженных пакетов?

    Опция «Совместимость теста соответствия X» для Hummingbird Exceed также доступна для Xming?

    Какой алгоритм планирования процесса используется Linux?

    Сценарий оболочки и crontab, чтобы фиксировать размер файла, имя и дату в CSV-файле, а затем отправлять по электронной почте?

    Как установить системное соединение через прокси-сервер

    Приостановить работу ОЗУ

    Linux и Unix - лучшая ОС в мире.