diff options
author | Olivier Fourdan <ofourdan@redhat.com> | 2016-02-08 17:48:26 +0100 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2016-03-11 13:14:32 -0500 |
commit | a49e7b9c2ebeb2e2ccb922265798234a8ce9d242 (patch) | |
tree | 82f8a57cc0caf4545b42bb5e4c16e73ba80d6e94 /hw | |
parent | c7735f102aa9daa604f304f2e8a2131fcdd652e8 (diff) |
xwayland: fix a crash on output removal
On output removal, the CRTC that was added in xwl_output_create()
is not removed in xwl_output_destroy() and would cause a segmentation
fault later on in ProcRRGetMonitors():
(EE) Segmentation fault at address 0x100000001
(EE)
(EE) 10: ? (?+0x29) [0x29]
(EE) 9: /usr/bin/Xwayland (_start+0x29) [0x423299]
(EE) 8: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7fdd80e7f580]
(EE) 7: /usr/bin/Xwayland (dix_main+0x3b3) [0x544ef3]
(EE) 6: /usr/bin/Xwayland (Dispatch+0x31e) [0x54109e]
(EE) 5: /usr/bin/Xwayland (ProcRRGetMonitors+0x9b) [0x4ca18b]
(EE) 4: /usr/bin/Xwayland (RRMonitorMakeList+0x269) [0x4c9ba9]
(EE) 3: /usr/bin/Xwayland (RRMonitorSetFromServer+0x118) [0x4c9198]
(EE) 2: /usr/bin/Xwayland (MakeAtom+0x30) [0x530710]
(EE) 1: /lib64/libc.so.6 (__restore_rt+0x0) [0x7fdd80e93b1f]
(EE) 0: /usr/bin/Xwayland (OsSigHandler+0x29) [0x5792d9]
Remove the output CRTC in xwl_output_destroy() to avoid the crash.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
(cherry picked from commit 2116f03be04240e961649ca750a7aa5438b8446c)
Diffstat (limited to 'hw')
-rw-r--r-- | hw/xwayland/xwayland-output.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c index 5263cb3e9..4903062a1 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -297,6 +297,7 @@ xwl_output_destroy(struct xwl_output *xwl_output) wl_output_destroy(xwl_output->output); xorg_list_del(&xwl_output->link); + RRCrtcDestroy(xwl_output->randr_crtc); RROutputDestroy(xwl_output->randr_output); xorg_list_for_each_entry(it, &xwl_screen->output_list, link) |