When i add to source in function indle_cb this debug strings (with KSKSA label):
static gboolean idle_cb(void *userdata) {
SoundEventData *d;
idle_id = 0;
g_print("KSKSA here: idle_cb\n");
while ((d = g_queue_pop_head(&sound_event_queue))) {
if (!(d = filter_sound_event(d)))
continue;
/* g_message("Dispatching signal %s on %s",
g_signal_name(d->signal_id), g_type_name(G_OBJECT_TYPE(d->object))); */
dispatch_sound_event(d);
free_sound_event(d);
}
g_print("KSKSA here: idle_cb END\n");
return FALSE;
}
i get this log from my multi thread program:
entered
leave
KSKSA here: idle_cb
KSKSA here: idle_cb END
KSKSA here: idle_cb
KSKSA here: idle_cb END
entered
leave
KSKSA here: idle_cb
KSKSA here: idle_cb END
KSKSA here: idle_cb
KSKSA here: idle_cb END
KSKSA here: idle_cb
entered
KSKSA here: idle_cb END
leave
KSKSA here: idle_cb
KSKSA here: idle_cb END
KSKSA here: idle_cb
entered
KSKSA here: idle_cb END
leave
KSKSA here: idle_cb
KSKSA here: idle_cb END
entered
leave
KSKSA here: idle_cb
KSKSA here: idle_cb END
KSKSA here: idle_cb
KSKSA here: idle_cb END
KSKSA here: idle_cb
entered
*** glibc detected *** ./durak: munmap_chunk(): invalid pointer: 0x09ca8a00 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7562b04]
/usr/lib/libX11.so.6[0xb741a01e]
/usr/lib/libX11.so.6(_XReply+0x10d)[0xb741a66d]
/usr/lib/libX11.so.6(XGetGeometry+0x6d)[0xb73f67ad]
/usr/lib/libgdk-x11-2.0.so.0[0xb7b3e5e4]
/usr/lib/libgdk-x11-2.0.so.0(gdk_window_get_geometry+0xb5)[0xb7b14295]
/usr/lib/libgdk-x11-2.0.so.0(gdk_screen_get_monitor_at_window+0xaa)[0xb7b1225a]
/home/wieker/Projects/old/durak/libcanberra-0.12/src/.libs/libcanberra-gtk.so.0(ca_gtk_proplist_set_for_widget+0x1f6)[0xb6870616]
/home/wieker/Projects/old/durak/libcanberra-0.12/src/.libs/libcanberra-gtk.so.0(ca_gtk_proplist_set_for_event+0x67)[0xb6870847]
/home/wieker/Projects/old/durak/libcanberra-0.12/src/.libs/libcanberra-gtk.so.0(ca_gtk_play_for_event+0x52)[0xb6870f32]
/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so[0xb7f208b3]
/usr/lib/libglib-2.0.so.0[0xb77e4581]
/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x1e8)[0xb77e6368]
/usr/lib/libglib-2.0.so.0[0xb77e98c3]
/usr/lib/libglib-2.0.so.0(g_main_loop_run+0x1ca)[0xb77e9d8a]
/usr/lib/libgtk-x11-2.0.so.0(gtk_main+0xb9)[0xb7c9ec39]
./durak[0x804a4f7]
./durak[0x804a604]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb750a775]
./durak[0x8049531]
======= Memory map: ========
where "entered" - when my thread B use gdk_threads_enter, "leave" - when it use
gdk_threads_leave().
so idle_cb shouldn't work together with my thread B, but it work, because it
doesn't lock with
gdk_threads_enter().
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]