LINUX.ORG.RU

Gtk && multi-threading


0

0

Ловлю те же ошибки во время выполнения, что и здесь http://www.nabble.com/GTK---threads-td24228604.html + еще

app: ../../src/xcb_io.c:176: process_responses: Проверочное утверждение `!(req && current_request && !(((long) (req->sequence) - (long) (current_request)) <= 0))' не выполнено.

Все вызовы защищены gtk_threads_enter/leave. Ошибки возникают недетерминированно, то есть приложение может полностью исполнится, а может влететь. Баг в библиотеках X11?

★★

Пока что не совсем разобрался, но возможно это не мой баг, а баг Gtk. enter/leave - сообщения из потока Б о входе в gdk_threads_enter/leave

Как можно заметить, не смотря на то, что поток Б входит в gdk_threads_enter выполняются функции Gtk из потока с циклом сообщений.

enter
leave
enter
leave
enter
leave
enter
*** glibc detected *** ./durak: double free or corruption (!prev): 0xb54f34f8 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7549b04]
/lib/i686/cmov/libc.so.6(cfree+0x96)[0xb754baa6]
/usr/lib/libX11.so.6[0xb740101e]
/usr/lib/libX11.so.6(_XReply+0x10d)[0xb740166d]
/usr/lib/libX11.so.6(XTranslateCoordinates+0x81)[0xb73f68f1]
/usr/lib/libgdk-x11-2.0.so.0[0xb7b29c9a]
/usr/lib/libgdk-x11-2.0.so.0(gdk_window_get_origin+0x92)[0xb7afb1d2]
/usr/lib/libgdk-x11-2.0.so.0(gdk_screen_get_monitor_at_window+0xc0)[0xb7af9270]
/usr/lib/libcanberra-gtk.so.0(ca_gtk_proplist_set_for_widget+0x1fe)[0xb681f5ee]
/usr/lib/libcanberra-gtk.so.0(ca_gtk_proplist_set_for_event+0x6c)[0xb681f82c]
/usr/lib/libcanberra-gtk.so.0(ca_gtk_play_for_event+0x52)[0xb681ff12]
/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so[0xb7f0686d]
/usr/lib/libglib-2.0.so.0[0xb77cb581]
/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x1e8)[0xb77cd368]
/usr/lib/libglib-2.0.so.0[0xb77d08c3]
/usr/lib/libglib-2.0.so.0(g_main_loop_run+0x1ca)[0xb77d0d8a]
/usr/lib/libgtk-x11-2.0.so.0(gtk_main+0xb9)[0xb7c85c39]
./durak[0x804a4f7]
./durak[0x804a604]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb74f1775]
./durak[0x8049531]

wieker ★★
() автор топика
Ответ на: комментарий от wieker

сделал:

wieker@:~$ sudo dpkg -r libcanberra-gtk-module sudo: unable to resolve host (Чтение базы данных ... на данный момент установлено 164706 файлов и каталогов.) Удаляется пакет libcanberra-gtk-module ... wieker@:~$

все стало нормально работать, видимо библиотека canberra-gtk-module не захватывает gdk_threads_mutex.

написать им багрепорт? или посмотреть исходники и отправить патч?

wieker ★★
() автор топика
Ответ на: комментарий от PayableOnDeath

Вы думайте прежде чем писать, тем более в этом разделе. Есть тысяча и одна причина использовать именно gtk. Но главное, что человек описывает конкретную проблему, а вы советуете чёрт знает что.

Вот если бы вы топикстартеру предложили денег за переписывание кода, чтобы использовать qt вместо gtk, плюс компенсацию за нанесённый психике вред, связанный с использованием qt - тогда это может быть дельным советом. Да и в этом случае совет говно.

ixrws ★★★
()
Ответ на: комментарий от ixrws

ути-пути, толстячок, вред, нанесённый твоей психике GTK, судя по всему, уже не исправим

PayableOnDeath
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.