Created attachment 86491 [details]
Backtrage for Weston when the segfault occours.
wayland (HEAD) 1.2.91-0-g4125367
drm (HEAD) libdrm-2.4.46-0-gc6d73cf
mesa (9.2) heads/9.2-0-g2cda3f0
libva (HEAD) libva-1.2.1-0-g88ed1eb
intel-driver (HEAD) 1.2.0-0-g6898ab7
weston (HEAD) 1.2.91-0-g7799385
When the mouse cursor is on a display which is unplugged, the mouse cursor stays on that display. If an application is launched it attempts to display on the unplugged display. This causes Weston to segfault.
* Move mouse to a second display with Weston running
* Unplug second display
* Quickly launch an application (tested with weston-terminal)
* Observe segfault
This crash is fixed on master:
Author: Xiong Zhang <firstname.lastname@example.org>
Date: Wed Oct 23 13:58:31 2013 +0800
compositor: set surface->plane from destroyed plane to NULL
In drm backend, the cursor_surface->plane point to
drm_output->cursor_plane.when this output is removed,
drm_output->cursor_plane is destroyed, butcursor_surface->plane
still point to destroyed plane. So once mouse move to this
cursor_surface and system will repaint this cursor_surface,
segment fault will generate in weston_surface_damage_below() function.
-set surface->plane to NULL whose plane point to unplugged output,
then change weston_surface_damage_below() to do nothing if
surface->plane is NULL (Kristian)
-set surface->plane to NULL in weston_surface_unmap(),
so that all surfaces that have a non-NULL plane pointer wil be
on compositor->surface_list (Kristian).
Signed-off-by: Xiong Zhang <email@example.com>
and 1.3 as 98562c36c116c466a20d096413319632c75e603d.