[PATCH] xwayland: fix a crash on output removal

Olivier Fourdan ofourdan at redhat.com
Tue Mar 1 08:20:39 UTC 2016


Hi Adam, Keith,

I think we'll need this patch in both branches master and 1.18 to fix a segfault in Xwayland on output removal (that one is completely my fault).

Was discussed with Daniel who suggested the fix on irc some time ago (and Daniel gave his R-b on irc, thus the R-b in the commit) but somehow forgot to track it and it seems it's not been pushed yet.

Cheers,
Olivier



----- Original Message -----
> 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 at redhat.com>
> Reviewed-by: Daniel Stone <daniels at collabora.com>
> ---
>  hw/xwayland/xwayland-output.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c
> index e9ec190..abb73ab 100644
> --- a/hw/xwayland/xwayland-output.c
> +++ b/hw/xwayland/xwayland-output.c
> @@ -298,6 +298,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)
> --
> 2.5.0
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list