При запуске программы на Qt+OpenGL вылетает ошибка

Доброго вечера! вопрос такого плана… при запуске программы Qt4.8+OpenGL, вылетает ошибка и программа аварийно завершается:

xcb_lock.c:77: _XGetXCBBuffer: Проверочное утверждение `((int) ((xcb_req ) - (dpy->request)) >= 0)’ не выполнено

В чем может быть проблема??! В гугле не получается найти ответ, с чем это может быть связано… (((

Привет.

Странно, вроди бы еще в 2008 этот баг был пофиксен.

Попробуйте вот так, а затем снова воспроизведите баг:


export LIBXCB_ALLOW_SLOPPY_LOCK=1

rpm -qf xcb_lock.c
rpm -qa synergy
glxinfo | grep rendering 
cat /etc/SuSE-release

Первая команда - адрес к файлу xcb_lock.c полный надо будет указать.

Поясни, пожалуйста, где это вводить (в консоли из любого места???), где мне искать файл xcb_lock.c? Я с линуксом работаю совсем недавно и многого не знаю… кстати, подключения к инету нет, если в этом коде предполагается скачивать пакеты!

А Вы как думаете?

find / -name xcb_lock.c 2> /dev/null

Скачивание не предполагается.

Теперь буду знать, как искать файлы. Спасибо)

Проблема вроде как решилась с помощью:
tuxx-home.at Support Forum • View topic - _XGetXCBBuffer, Locking assertion failure, libxcb-xlib.so.0

Пакет xorg-x11-libX11-7.2-13.i586.rpm скачан отсюда:
Index of /suse/10.2/base/suse/i586

Сссылка 2008 года — это не решение, как и пакет от версии 10.2.

Да, видимо не решение… (( ибо ту ошибку исправило, но появилась другая! И многопоточное приложение на Qt, которое работало с предыдущей версией, сейчас отказывается работать… Новая ошибка выскакивает через раз или реже, при этом прога просто зависает


XLib: unexpected async reply (sequence 0x1a2)
X Error: GLXBadContextTag 158

Что посоветуете в данной ситуации???

Для начала покажите список подключенных репозиториев.

zypper lr -d

Вышеописанная ошибка, устранилась вызовом XInitThreads()! Просто надо было повнимательнее документацию по Qt 4.8 почитать! Но на этом траблы не закончились! Если под OpenSUSE 11.0 все проблемы решились, пусть и радикально с пакетом 10.2, то под OpenSUSE 12.1 это уже не прокатило и при открытии модального окна или раскрывающегося списка главного интерфейса программы вылетает ошибка:

Fatal IO error: client killed

В чем здесь загвоздка??
Список подключенных репозиториев:
Включен Обновление
1 | openSUSE-12.1-12.1-1.4 | openSUSE-12.1-12.1-1.4 | Да | Нет | 99 | yast2 | cd:///?devices=/dev/disk/by-id/usb-Slimtype_eSAU208_4_2010022200000002D7F-0:0 |
2 | repo-debug | openSUSE-12.1-Debug |Нет | Да | 99 | NONE | Index of /debug/distribution/12.1/repo/oss |
3 | repo-debug-update | openSUSE-12.1-Update-Debug |Нет | Да | 99 | NONE | Index of /debug/update/12.1 |
4 | repo-non-oss | openSUSE-12.1-Non-Oss |Да | Да | 99 | NONE | Index of /distribution/12.1/repo/non-oss |
5 | repo-oss | openSUSE-12.1-Oss |Да | Да | 99 | NONE | Index of /distribution/12.1/repo/oss |
6 | repo-source | openSUSE-12.1-Source | Нет | Да | 99 | NONE | Index of /source/distribution/12.1/repo/oss |
7 | repo-update | openSUSE-12.1-Update | Да | Да | 99 | NONE | Index of /update/12.1

А что за программа?

Коротка говоря - “Радар”, получать инфу по сети и отображать ее на экране! Отрисовка, полученных данных, средствами OpenGL в отдельном потоке! Qt 4.8 это позволяет делать… после долгих переборов дистрибутивов Linux остановились на OpenSUSE 12.1! Но здесь видимо загвоздка в работе с GL, ибо комментируя поток отрисовки - основной интерфейс программы нормально работает! Как я уже писал под 11 версию Linux как-то решилась эта проблемка, а вот под 12 пока не понятно как… но нужна именно 12!

Коротко говоря — ошибка в самой программе. Разбирайтесь.

Так а на что обратить внимание?! И почему тогда в CentOS 5.5 все работает… хотя не всегда! под разными драйверами по-разному! Под одним все окна и элементы интерфейса нормально работают… под другим идет зависание программы! Это в СentOS 5.5… понятно, что здесь что-то со взаимодействием с OpenGL… это может быть связано с видеодрайвером? Если дело в программе, то я могу подробно с кодом выложить спорные моменты… но пока одна и та же программа на разных дистрибутивах работает по-разному! Просто Linux устанавливается не на обыкновенный PC, а промышленный компьютер… и пока корректно стал, только SUSE 12.1! Поэтому с ним и нужно наладить дружбу :slight_smile: подскажите куда смотреть, пожалуйста!

Наверное, дело в разных версиях Qt. Вам надо на форум программистов.

все что связано с OpenGL определенно связано с видеодрайвером.