Отладка «Не удалось клонировать X дисплей соединение» ошибка - PullRequest
0 голосов
/ 25 апреля 2020

Наше приложение основано на Qt GUI, также использующее стороннюю библиотеку 3D-графики (для обработки вызовов opengl) для рендеринга 3d-моделей. Все это прекрасно работает на автономной Linux машине с собственным дисплеем. Но при доступе через удаленное отображение на платформе VirtualGL (через 'vglrun') мы обнаружили, что новое соединение X11 с X-сервером получается всякий раз, когда мы открываем новое графическое окно, но при закрытии этого окна это соединение X11 не освобождается , В конце концов, во многих сеансах открытия и закрытия достигается предел количества соединений, которые могут быть созданы на X-сервере, и выдается эта ошибка:

[VGL] ОШИБКА: в VirtualWin-- [VGL] 78 : Не удалось клонировать соединение дисплея X

Теперь наша проблема в том, что между этими сторонними библиотеками (графическая библиотека Qt / HOOPS) я не знаю, кто это делает (или, может быть, мы делаем это где-то в наш собственный код), и я даже не знаю, как его отладить. Есть ли способ, которым я могу поставить точку останова где-нибудь (в том числе в стороннем коде) и узнать, где именно это может произойти? Я просто хочу знать, какое утверждение получает соединение с X-сервером, чтобы мы могли это исправить или хотя бы сообщить третьему лицу. Кроме того, есть ли какая-либо специфицированная c C функция для создания (и освобождения) этого соединения, чтобы я мог искать в исходном коде?

Это похоже на проблему, о которой кто-то сообщил здесь: https://sourceforge.net/p/virtualgl/bugs/76/, но это было с Chrome, и я не знаю, было ли это когда-либо исправлено (и как, если да ) Chrome команда разработчиков.

...