discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=bb30294f6605da2830378540c8d6f6685ecf230e

commit bb30294f6605da2830378540c8d6f6685ecf230e
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Mar 3 11:56:16 2017 -0500

    hide wl clients before deleting them on surface destroy
    
    ==13853== Invalid read of size 8
    ==13853==    at 0x5C7C56: _e_comp_wl_surface_destroy (e_comp_wl.c:1804)
    ==13853==    by 0xA999971: destroy_resource (wayland-server.c:611)
    ==13853==    by 0xA9A06F4: for_each_helper (wayland-util.c:374)
    ==13853==    by 0xA9A073F: wl_map_for_each (wayland-util.c:387)
    ==13853==    by 0xA999C87: wl_client_destroy (wayland-server.c:763)
    ==13853==    by 0xA999216: wl_client_connection_data (wayland-server.c:283)
    ==13853==    by 0xA99C2B0: wl_event_source_fd_dispatch (event-loop.c:90)
    ==13853==    by 0xA99CC11: wl_event_loop_dispatch (event-loop.c:423)
    ==13853==    by 0xA787AC0: _cb_create_data (ecore_wl2_display.c:272)
    ==13853==    by 0xDBE984D: _ecore_call_fd_cb (ecore_private.h:333)
    ==13853==    by 0xDBEC01B: _ecore_main_fd_handlers_call (ecore_main.c:1992)
    ==13853==    by 0xDBEC8A9: _ecore_main_loop_iterate_internal 
(ecore_main.c:2379)
    ==13853==    by 0xDBEA672: ecore_main_loop_begin (ecore_main.c:1292)
    ==13853==    by 0x441DA9: main (e_main.c:1089)
    ==13853==  Address 0x30ba5d90 is 176 bytes inside a block of size 1,424 
free'd
    ==13853==    at 0x4C2ED4A: free (vg_replace_malloc.c:530)
    ==13853==    by 0x4603D6: _e_client_free (e_client.c:588)
    ==13853==    by 0x5475A8: e_object_free (e_object.c:119)
    ==13853==    by 0x5477C4: e_object_unref (e_object.c:152)
    ==13853==    by 0x5473D7: e_object_del (e_object.c:60)
    ==13853==    by 0x5C7C51: _e_comp_wl_surface_destroy (e_comp_wl.c:1803)
    ==13853==    by 0xA999971: destroy_resource (wayland-server.c:611)
    ==13853==    by 0xA9A06F4: for_each_helper (wayland-util.c:374)
    ==13853==    by 0xA9A073F: wl_map_for_each (wayland-util.c:387)
    ==13853==    by 0xA999C87: wl_client_destroy (wayland-server.c:763)
    ==13853==    by 0xA999216: wl_client_connection_data (wayland-server.c:283)
    ==13853==    by 0xA99C2B0: wl_event_source_fd_dispatch (event-loop.c:90)
    ==13853==    by 0xA99CC11: wl_event_loop_dispatch (event-loop.c:423)
    ==13853==    by 0xA787AC0: _cb_create_data (ecore_wl2_display.c:272)
    ==13853==    by 0xDBE984D: _ecore_call_fd_cb (ecore_private.h:333)
    ==13853==    by 0xDBEC01B: _ecore_main_fd_handlers_call (ecore_main.c:1992)
    ==13853==    by 0xDBEC8A9: _ecore_main_loop_iterate_internal 
(ecore_main.c:2379)
    ==13853==    by 0xDBEA672: ecore_main_loop_begin (ecore_main.c:1292)
    ==13853==    by 0x441DA9: main (e_main.c:1089)
    ==13853==  Block was alloc'd at
    ==13853==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
    ==13853==    by 0x5471A4: e_object_alloc (e_object.c:20)
    ==13853==    by 0x467AD5: e_client_new (e_client.c:2596)
    ==13853==    by 0x5C7F11: _e_comp_wl_compositor_cb_surface_create 
(e_comp_wl.c:1858)
    ==13853==    by 0xADBDC57: ffi_call_unix64 (in /usr/lib64/libffi.so.6.0.2)
    ==13853==    by 0xADBD6B9: ffi_call (in /usr/lib64/libffi.so.6.0.2)
    ==13853==    by 0xA99EEED: wl_closure_invoke (connection.c:935)
    ==13853==    by 0xA999581: wl_client_connection_data (wayland-server.c:371)
    ==13853==    by 0xA99C2B0: wl_event_source_fd_dispatch (event-loop.c:90)
    ==13853==    by 0xA99CC11: wl_event_loop_dispatch (event-loop.c:423)
    ==13853==    by 0xA787AC0: _cb_create_data (ecore_wl2_display.c:272)
    ==13853==    by 0xDBE984D: _ecore_call_fd_cb (ecore_private.h:333)
    ==13853==    by 0xDBEC01B: _ecore_main_fd_handlers_call (ecore_main.c:1992)
    ==13853==    by 0xDBEC8A9: _ecore_main_loop_iterate_internal 
(ecore_main.c:2379)
    ==13853==    by 0xDBEA672: ecore_main_loop_begin (ecore_main.c:1292)
    ==13853==    by 0x441DA9: main (e_main.c:1089)
---
 src/bin/e_comp_wl.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 99eedc6..d93f02e 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1759,9 +1759,13 @@ _e_comp_wl_surface_destroy(struct wl_resource *resource)
         ec->ignored = 1;
         if (!e_object_is_del(E_OBJECT(ec)))
           ec->comp_data->mapped = EINA_FALSE;
+        evas_object_hide(ec->frame);
+     }
+   else
+     {
+        evas_object_hide(ec->frame);
+        e_object_del(E_OBJECT(ec));
      }
-   else e_object_del(E_OBJECT(ec));
-   evas_object_hide(ec->frame);
 }
 
 static void

-- 


Reply via email to