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

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

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

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

  • Как использовать командную строку для изменения яркости и цвета?
  • Запуск emacsclient со сценарием
  • Команда для принудительного удаления стрелки (захват мыши)
  • Любой инструмент для обновления патча X.org? Т.е. перезагрузите X.org без выхода из системы и входа в систему
  • Звуковая обратная связь в терминальном / текстовом редакторе?
  • Не удалось запустить X Server без экранов, no xorg.config для редактирования
  • xmodmap проблемы и несоответствия с более чем 4 альтернативными символами на ключ
  • Обновление ядра (4.10) привело к сбою XServer и остальной системы (Arch)
  • 2 Solutions collect form web for “Как плохое вызовы OpenGL вызывают сбои всей системы?”

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

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

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

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

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

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

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

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

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

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

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

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

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