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

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

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

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

  • Определение назначений клавиш для X.org на ПК
  • Почему шрифты все ввернуты для удаленных приложений X11 на одном клиенте Mac?
  • X11 - несколько мониторов, видимых как один монитор
  • Игнорирование события первого щелчка на dpms или пробуждении экрана
  • Почему я не могу переключить виртуальный терминал сейчас?
  • Масштабирование HiDPI для приложений, которые не знакомы
  • Отключить мышь (не тачпад!) В Xorg во время простоя
  • FreeBSD xfce не работает
  • 2 Solutions collect form web for “Как плохое вызовы OpenGL вызывают сбои всей системы?”

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

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

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

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

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

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

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

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

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

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

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

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

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