GNOME Bugzilla – Bug 738384
crash when creating a new workspace with sticky windows that have struts
Last modified: 2014-10-13 11:52:34 UTC
Created attachment 288304 [details] [review] patch fixing the issue The constructor of MetaWorkspace currently collects windows that are sticky before initializing its state which leads to a crash in the case of windows with struts which trigger a work area recalculation where mutter assumes, due to uninitialized state, that an existing work area has to be freed. This leads to a crash since the invalid_work_areas has not been set to TRUE yet when meta_workspace_invalidate_work_area is reached. (Backtrace if you want additional infos http://pastebin.com/BJ7F97jN) Patch that fixes it is attached.
Review of attachment 288304 [details] [review]: ::: src/core/workspace.c @@ +202,3 @@ + windows = meta_display_list_windows (screen->display, META_LIST_SORTED); + for (l = windows; l; l = l->next) + if (meta_window_located_on_workspace (l->data, workspace)) { Wrong coding style: either leave out the braces, or use if () { add_window(); }
Created attachment 288305 [details] [review] corrected patch Sorry, I had that changed to add a debug print.
Review of attachment 288305 [details] [review]: No problem, thanks for the patch!
Review of attachment 288305 [details] [review]: commit d07e2f409089ac08e6f7f0eeae978ee681c80354 Author: Tom Beckmann <tomjonabc@gmail.com> Date: Sun Oct 12 11:18:58 2014 +0200 workspace: fix crash when creating a new workspace with sticky windows that have struts The constructor would collect windows that are sticky before initializing its state which would lead to a crash in the case of windows with struts which trigger a work area recalculation where mutter would assume, due to uninitialized state, that an existing work area has to be freed. https://bugzilla.gnome.org/show_bug.cgi?id=738384