[PATCH weston v2] compositor: fix crash when destroying incompletely created output

Dawid Gajownik gajownik at gmail.com
Thu Aug 6 17:04:16 PDT 2015


When the output can't be completely created in the backend (for example
lack of memory), weston_compositor_add_output() is never run. In such
a case output->link is not initialized. Letter, when
weston_output_destroy() is called, application crashes on
wl_list_remove(&output->link).

This problem happens when drm, fbdev, rdp, rpi or wayland backend is
used.

v2: Initialize output->link in weston_output_init() as suggested by
Derek Foreman.

Signed-off-by: Dawid Gajownik <gajownik at gmail.com>
---
 src/compositor.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/compositor.c b/src/compositor.c
index e27f44e..0268afc 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4077,6 +4077,7 @@ weston_output_init(struct weston_output *output, struct weston_compositor *c,
 	wl_list_init(&output->animation_list);
 	wl_list_init(&output->resource_list);
 	wl_list_init(&output->feedback_list);
+	wl_list_init(&output->link);
 
 	loop = wl_display_get_event_loop(c->wl_display);
 	output->repaint_timer = wl_event_loop_add_timer(loop,
-- 
2.4.3



More information about the wayland-devel mailing list