Мое приложение получает данные из сети и рисует их на сцене (сцена использует ручной движок OpenGL).
Он работает в течение нескольких часов. Когда я не использую свой рабочий стол, мой монитор, из-за того, что Display Power Manager Signaling (dpms) отключается. И затем, когда я касаюсь мыши или клавиатуры, монитор включается, и приложение зависает (X тоже зависает).
Если я это сделаю xset -dmps
операционная система не использует dpms, и приложение работает стабильно.
Эти проблемы возникают в Centos 6 и Archlinux, но когда я запускаю приложение под Ubuntu 12.10, он отлично работает!
Я пробовал разные драйверы NVidia. Без эффекта.
Я попытался использовать ssh для удаленного входа и подключиться к процессу с помощью gdb. После включения монитора я не могу найти приложение в таблице процессов.
Как диагностировать проблему? Что происходит (в среде OpengGL), когда монитор выключается/включается? Ubuntu делает что-то особенное при использовании dpms?
У нас есть предположение по причинам! Когда монитор выключен, мы теряем контекст OpenGL. Когда монитор просыпается, приложение зависает (нет контекста). И разница в поведении в зависимости от операционной системы связана с различными подключениями монитора: Монитор для Kubuntu подключен к VGA-кабелю. И поэтому (возможно) это не влияет на поведение X.