GNOME Bugzilla – Bug 73127
gnome2-settings-daemon crashes with gtk-multihead
Last modified: 2004-12-22 21:47:04 UTC
gnome2-settings-daemon crashes when running on the gtk-multihead branch. The crash does not occur with the "plain gtk+". This was tested with the snapshot take at "Fri Mar 1 04:26:00 GMT 2002" Here's the stack trace: Current function is _gdk_xsettings_watch_cb 2506 g_assert (gdkwin != NULL); (dbx)l 2502 2503 gdkwin = gdk_window_lookup_for_display 2504 (gdk_x11_display_manager_get_display (gdk_get_display_manager (), display), 2505 window); 2506 g_assert (gdkwin != NULL); 2507 screen = gdk_drawable_get_screen (gdkwin); 2508 2509 if (is_start) 2510 gdk_window_add_filter (gdkwin, gdk_xsettings_client_event_filter, screen); 2511 else (dbx)where current thread: t@1 [1] __sigprocmask(0x0, 0xffbeee48, 0x0, 0x0, 0x0, 0x0), at 0xfecd9ab8 [2] _resetsig(0xfecdc408, 0x0, 0x0, 0x55ed8, 0xfecee000, 0x0), at 0xfecce4fc [3] _sigon(0x55ed8, 0xfecf59a8, 0x5, 0xffbeef1c, 0x55ed8, 0xfdf11029), at 0xfeccdc9c [4] _thrp_kill(0x0, 0x1, 0x5, 0xfecee000, 0x1, 0xff00), at 0xfecd0cb0 [5] raise(0x5, 0x6, 0xffbef007, 0x0, 0xff3e2668, 0x0), at 0xfdccafe0 [6] g_logv(log_domain = 0xfe3bbd3c "Gdk", log_level = G_LOG_LEVEL_ERROR, format = 0xfe3bbd40 "file %s: line %d: assertion failed: (%s)", args1 = 0xffbef4c0), line 551 in "gmessages.c" [7] g_log(log_domain = 0xfe3bbd3c "Gdk", log_level = G_LOG_LEVEL_ERROR, format = 0xfe3bbd40 "file %s: line %d: assertion failed: (%s)", ...), line 574 in "gmessages.c" =>[8] _gdk_xsettings_watch_cb(display = 0x643b0, window = 29360130U, is_start = 1, mask = 4325376, cb_data = (nil)), line 2506 in "gdkevents-x11.c" [9] check_manager_window(client = 0x686f0), line 435 in "xsettings-client.c" [10] _gdk_xsettings_client_process_event(client = 0x686f0, xev = 0xffbef830), line 524 in "xsettings-client.c" [11] gdk_xsettings_client_event_filter(xevent = 0xffbef830, event = 0x9d700, data = 0x67248), line 2487 in "gdkevents-x11.c" [12] gdk_event_apply_filters(xevent = 0xffbef830, event = 0x9d700, filters = 0x5d388), line 317 in "gdkevents-x11.c" [13] gdk_event_translate(display = 0x64320, event = 0x9d700, xevent = 0xffbef830, return_exposes = 0), line 629 in "gdkevents-x11.c" [14] _gdk_events_queue(display = 0x64320), line 1822 in "gdkevents-x11.c" [15] gdk_event_dispatch(source = 0x683d0, callback = (nil), user_data = (nil)), line 1881 in "gdkevents-x11.c" [16] g_main_dispatch(context = 0x68418), line 1618 in "gmain.c" [17] g_main_context_dispatch(context = 0x68418), line 2160 in "gmain.c" [18] g_main_context_iterate(context = 0x68418, block = 1, dispatch = 1, self = 0x56f68), line 2241 in "gmain.c" [19] g_main_loop_run(loop = 0x9c3e0), line 2461 in "gmain.c" [20] gtk_main(), line 884 in "gtkmain.c" [21] main(argc = 1, argv = 0xffbefc84), line 211 in "gnome-settings-daemon.c" (dbx)
In gdk_xsettings_watch_cb the g_assert is wrong as event filters can be added without window information.
in gdk_xsettings_watch_cb remove the g_assert on gdkwin. in gdk_xsettings_notify_cb revert to default screen in an GDK_NOTHING event is received. the changes are in cvs branch.