From 14a6ac64589c85dc8ca3875b727ddddd3a164646 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 29 Sep 2015 12:58:13 -0400 Subject: [PATCH] unset E_Client->internal_elm_win before deleting the client in e_win ==24509== Invalid write of size 8 ==24509== at 0x502D00: _e_elm_win_trap_del (e_win.c:39) ==24509== by 0x509BFC2: _elm_win_evas_object_smart_del (elm_win.c:1886) ==24509== by 0x91F4643: evas_obj_smart_del (in /usr/lib/libevas.so.1.15.99) ==24509== by 0x91F5B5C: evas_object_smart_del (evas_object_smart.c:1021) ==24509== by 0x91E9107: _evas_object_eo_base_destructor (evas_object_main.c:739) ==24509== by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x5086715: _elm_widget_eo_base_destructor (elm_widget.c:5744) ==24509== by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99) ==24509== by 0xE5443EC: _eo_del_internal (eo_private.h:221) ==24509== by 0xE5443EC: _eo_unref (eo_private.h:295) ==24509== by 0xE5443EC: _eo_do_end (eo.c:546) ==24509== by 0x4D5B1A: _e_obj_dialog_free (e_obj_dialog.c:125) ==24509== by 0x4D61FB: e_object_free (e_object.c:152) ==24509== by 0x4D61FB: e_object_unref (e_object.c:152) ==24509== by 0x4EDC54: _e_sys_logout_after (e_sys.c:750) ==24509== by 0x4ED7AC: _e_sys_action_do (e_sys.c:925) ==24509== by 0x4EE348: e_sys_action_raw_do (e_sys.c:311) ==24509== by 0x4EE43F: _e_sys_comp_done_cb (e_sys.c:66) ==24509== by 0x6097348: _edje_emit_cb (edje_program.c:1476) ==24509== by 0x6097348: _edje_emit_handle (edje_program.c:1405) ==24509== by 0x60924EE: _edje_message_queue_process (edje_message_queue.c:787) ==24509== by 0x60926A6: _edje_job (edje_message_queue.c:154) ==24509== by 0xCC5087A: _ecore_job_event_handler (ecore_job.c:121) ==24509== by 0xCC4B204: _ecore_call_handler_cb (ecore_private.h:390) ==24509== by 0xCC4B204: _ecore_event_call (ecore_events.c:565) ==24509== by 0xCC52AE7: _ecore_main_loop_iterate_internal (ecore_main.c:1927) ==24509== by 0xCC52CD6: ecore_main_loop_begin (ecore_main.c:983) ==24509== by 0x4383F4: main (e_main.c:1047) ==24509== Address 0x14fb1a28 is 1,176 bytes inside a block of size 1,352 free'd ==24509== at 0x4C2A65B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==24509== by 0x4D61FB: e_object_free (e_object.c:152) ==24509== by 0x4D61FB: e_object_unref (e_object.c:152) ==24509== by 0x502CED: _e_elm_win_trap_del (e_win.c:37) ==24509== by 0x509BFC2: _elm_win_evas_object_smart_del (elm_win.c:1886) ==24509== by 0x91F4643: evas_obj_smart_del (in /usr/lib/libevas.so.1.15.99) ==24509== by 0x91F5B5C: evas_object_smart_del (evas_object_smart.c:1021) ==24509== by 0x91E9107: _evas_object_eo_base_destructor (evas_object_main.c:739) ==24509== by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x5086715: _elm_widget_eo_base_destructor (elm_widget.c:5744) ==24509== by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99) ==24509== by 0xE5443EC: _eo_del_internal (eo_private.h:221) ==24509== by 0xE5443EC: _eo_unref (eo_private.h:295) ==24509== by 0xE5443EC: _eo_do_end (eo.c:546) ==24509== by 0x4D5B1A: _e_obj_dialog_free (e_obj_dialog.c:125) ==24509== by 0x4D61FB: e_object_free (e_object.c:152) ==24509== by 0x4D61FB: e_object_unref (e_object.c:152) ==24509== by 0x4EDC54: _e_sys_logout_after (e_sys.c:750) ==24509== by 0x4ED7AC: _e_sys_action_do (e_sys.c:925) ==24509== by 0x4EE348: e_sys_action_raw_do (e_sys.c:311) ==24509== by 0x4EE43F: _e_sys_comp_done_cb (e_sys.c:66) ==24509== by 0x6097348: _edje_emit_cb (edje_program.c:1476) ==24509== by 0x6097348: _edje_emit_handle (edje_program.c:1405) ==24509== by 0x60924EE: _edje_message_queue_process (edje_message_queue.c:787) ==24509== by 0x60926A6: _edje_job (edje_message_queue.c:154) ==24509== by 0xCC5087A: _ecore_job_event_handler (ecore_job.c:121) ==24509== by 0xCC4B204: _ecore_call_handler_cb (ecore_private.h:390) ==24509== by 0xCC4B204: _ecore_event_call (ecore_events.c:565) ==24509== by 0xCC52AE7: _ecore_main_loop_iterate_internal (ecore_main.c:1927) ==24509== by 0xCC52CD6: ecore_main_loop_begin (ecore_main.c:983) ==24509== by 0x4383F4: main (e_main.c:1047) --- src/bin/e_win.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_win.c b/src/bin/e_win.c index f783bcecb6..266d43f28f 100644 --- a/src/bin/e_win.c +++ b/src/bin/e_win.c @@ -34,9 +34,9 @@ _e_elm_win_trap_del(void *data, Evas_Object *o) EINA_SAFETY_ON_NULL_RETURN(ctx); if (ctx->client) { + ctx->client->internal_elm_win = NULL; e_object_del(E_OBJECT(ctx->client)); evas_object_data_set(o, "E_Client", NULL); - ctx->client->internal_elm_win = NULL; } free(ctx); } -- 2.34.1