GNOME Bugzilla – Bug 106086
Metacity dumps on multihead.
Last modified: 2004-12-22 21:47:04 UTC
Open the nautilus preferences on second head. Then on metacity keeps dumping. Havoc: Currently the preferences window although opened in second head is shown on the first head. I will attach the patch for nautilus with screen stuff done. The trace is as below. t@1 (l@1) program terminated by signal SEGV (no mapping at the fault address) Current function is add_constraint 509 if (c->above == above) (dbx) where current thread: t@1 =>[1] add_constraint(constraints = 0x1e7770, above = 0x1deb50, below = 0x1ed318), line 509 in "stack.c" [2] create_constraints(constraints = 0x1e7770, windows = 0x15f244), line 597 in "stack.c" [3] constrain_stacking(stack = 0x1cd390), line 788 in "stack.c" [4] meta_stack_ensure_sorted(stack = 0x1cd390), line 932 in "stack.c" [5] meta_stack_sync_to_server(stack = 0x1cd390), line 1060 in "stack.c" [6] meta_stack_raise(stack = 0x1cd390, window = 0x1d9488), line 153 in "stack.c" [7] meta_window_raise(window = 0x1d9488), line 3255 in "window.c" [8] event_callback(event = 0xffbfed30, data = 0x1b9e50), line 1321 in "display.c" [9] filter_func(xevent = 0xffbfed30, event = 0x1ef310, data = 0x1bff48), line 94 in "ui.c" dbx: warning: can't find file "/gnome-2.9/src-2.0n-12Feb03-community/gtk+/gdk/x11/.libs/libgdk-x11.al(gdkevents-x11.lo)"dbx: warning: see `help finding-files' [10] gdk_event_apply_filters(0xffbfed30, 0x1ef310, 0x15efd4, 0xfffffff8, 0x0, 0x1ef369), at 0xfeb6d98c [11] gdk_event_translate(0x175a60, 0x1ef310, 0xffbfed30, 0x0, 0x0, 0xffbfed80), at 0xfeb6e818 [12] _gdk_events_queue(0x175a60, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfeb712e8 [13] gdk_event_dispatch(0x181c40, 0x0, 0x0, 0xffbfee90, 0x0, 0x0), at 0xfeb717ac dbx: warning: can't find file "/gnome-2.9/src-2.0n-12Feb03-community/glib/glib/gmain.lo" [14] g_main_dispatch(0x15f650, 0x1f06f0, 0x1bc, 0xff1c12d4, 0xff1c12d4, 0xffbfef94), at 0xfe66168c [15] g_main_context_dispatch(0x15f650, 0x7fffffff, 0x1dcce8, 0x5, 0x5, 0x5), at 0xfe66363c [16] g_main_context_iterate(0x15f650, 0x1, 0x1, 0x15c188, 0x20, 0x0), at 0xfe663db8 [17] g_main_loop_run(0x15bc68, 0x15c278, 0x70f80, 0x0, 0x696c6500, 0x0), at 0xfe664dd4 [18] main(argc = 3, argv = 0xffbff27c), line 339 in "main.c"
Created attachment 14320 [details] [review] nautilus patch with multihead done for preferences window.
The Nautilus patch has been checked in to CVS HEAD. Approved by Campd.
I can't reproduce this, it doesn't crash for me.
Havoc: oops! you have to close the nautilus window after opening the preferences window on the second head and then metacity starts dumping.
That doesn't crash for me either ;-)
Need to close all the windows on both heads. On the second head open nautilus window, invoke preferences. Close the nautilus window. Right click anywhere on the desktop on the second head and then it should dump for sure Havoc :) The fact that I don't use Multihead machines any regular work made me assume the above steps was obvious. Apologies for wasting your time Havoc.
Created attachment 14461 [details] [review] Probable fix
Havoc: The stack trace above is misleading, I got another one where it dumped at ensure_above() > g_assert (below->stack_position + 1 == above->stack_position); On a multihead(2) machine we get 2 MetaStack's created. But while stacking in create_constraints(), we get meta_group_list_windows() which gives windows in both the stacks, but belonging to one group. So, for example in the case of Nautilus, we have Desktop 1 and Desktop 2. Preferences window is on Desktop 2. The Desktop 2's stack_position is 1 and Pref's stack_position is 2 (these 2 belong to same stack) The Desktop 1's stack_position is 2 (another stack). We have a constraint created for Pref to be on top of Desktop 1 as well. Hence in ensure_above the stack positions of Pref and Desktop 1 are the same and we have a dump. While creating constraints we need to filter out the windows belonging to different stacks.
Created attachment 14478 [details] [review] another way to patch
Thanks for tracking down this issue. Does the patch I just attached work for you?
Havoc: Works fine. Thanks :)
Fixed in CVS