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

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

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

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

  • Отключение расширения сервера Xorg во время выполнения (для новых клиентов)?
  • Нужен ли мне рабочий стол для запуска графического интерфейса?
  • Могу ли я хранить приложения, работающие на X сеансах?
  • Как получить информацию о том, какой сервер отображения работает?
  • Linux Mint 13 Xfce оконная кнопка исчезла и нет курсора мыши в текстовом режиме
  • Изменение конфигурации сервера X во время выполнения
  • Каковы цели различных типов шрифтов XWindows?
  • Как найти версию xkb на моей машине
  • 2 Solutions collect form web for “Как плохое вызовы OpenGL вызывают сбои всей системы?”

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

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

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

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

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

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

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

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

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

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

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

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

    Interesting Posts

    Как сопоставить идентификаторы жесткого диска Linux, такие как «sd 3: 0: 0: 0:», например, «ata8:»?

    Как преобразовать рабочие страницы Linux в HTML без использования groff?

    Как установить PostgreSQL и PostGIS на Ubuntu 14.04 и разрешить удаленный доступ через Интернет?

    Как я могу удалить вход в терминал?

    Как мне настроить настройку vim-pathogen для группы как пользователя без прав root?

    printf в моем выпуске теперь

    Экран GNU: изменение имени нового окна

    Как создать ярлык для изменения размеров панелей в окне tmux?

    Странное закрытие редактора vi

    Как добавить гостевую виртуальную машину KVM в virsh

    Как получить bcm4360 для работы с kali linux live persistent USB?

    Публичная доля, использующая samba

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

    Как блокируется блокировка UDP-трафика (кроме трафика, связанного с udp-dns)?

    Соответствующая команда Debian для add-apt-repository?

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