[PATCH 2/2] xwayland: Don't (double) destroy input resources in CloseScreen

Adam Jackson ajax at redhat.com
Tue Aug 4 10:17:02 PDT 2015


By the time we get here we've already done CloseDownDevices, so on the
second regeneration you get:

    Invalid read of size 4
       at 0x43402A: RemoveDevice (devices.c:1125)
       by 0x427902: xwl_seat_destroy (xwayland-input.c:568)
       by 0x42649C: xwl_close_screen (xwayland.c:116)
       by 0x4B7F67: CursorCloseScreen (cursor.c:187)
       by 0x536003: AnimCurCloseScreen (animcur.c:106)
       by 0x539831: present_close_screen (present_screen.c:64)
       by 0x43E486: dix_main (main.c:351)
       by 0x30D70206FF: (below main) (libc-start.c:289)
     Address 0x980e1a0 is 64 bytes inside a block of size 904

       at 0x4A07D6A: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
       by 0x434158: RemoveDevice (devices.c:1157)
       by 0x42F77B: CloseDeviceList (devices.c:1017)
       by 0x430246: CloseDownDevices (devices.c:1047)
       by 0x43E3EB: dix_main (main.c:333)
       by 0x30D70206FF: (below main) (libc-start.c:289)

Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 hw/xwayland/xwayland-input.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
index 4639048..f4d8fab 100644
--- a/hw/xwayland/xwayland-input.c
+++ b/hw/xwayland/xwayland-input.c
@@ -565,8 +565,6 @@ create_input_device(struct xwl_screen *xwl_screen, uint32_t id)
 void
 xwl_seat_destroy(struct xwl_seat *xwl_seat)
 {
-    RemoveDevice(xwl_seat->pointer, FALSE);
-    RemoveDevice(xwl_seat->keyboard, FALSE);
     wl_seat_destroy(xwl_seat->seat);
     wl_surface_destroy(xwl_seat->cursor);
     if (xwl_seat->cursor_frame_cb)
-- 
2.4.3



More information about the xorg-devel mailing list