From 06948d1a260851d59bb554583e0c54cb61ea8f7e Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 29 Sep 2015 12:51:36 -0400 Subject: [PATCH] remove object event callback on notification popdown ==24509== Invalid write of size 8 ==24509== at 0x2C5ED500: _notification_popup_del_cb (e_mod_popup.c:404) ==24509== by 0x91AAE93: _eo_evas_object_cb (evas_callbacks.c:92) ==24509== by 0xE54DDEA: _eo_base_event_callback_call (eo_base_class.c:715) ==24509== by 0xE54B67A: eo_event_callback_call (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x91AB323: evas_object_event_callback_call (evas_callbacks.c:264) ==24509== by 0x91E8DE3: _evas_object_eo_base_destructor (evas_object_main.c:691) ==24509== by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x60A3019: _edje_object_eo_base_destructor (edje_smart.c:43) ==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 0x6091146: edje_match_callback_exec_check_finals (edje_match.c:556) ==24509== by 0x6091146: edje_match_callback_exec (edje_match.c:711) ==24509== by 0x60974AE: _edje_emit_cb (edje_program.c:1453) ==24509== by 0x60974AE: _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 0x23b3dcb0 is 16 bytes inside a block of size 80 free'd ==24509== at 0x4C2A65B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==24509== by 0x2C5ED606: _notification_popdown (e_mod_popup.c:747) ==24509== by 0x2C5ED952: _notification_reshuffle_cb (e_mod_popup.c:700) ==24509== by 0x91AAE93: _eo_evas_object_cb (evas_callbacks.c:92) ==24509== by 0xE54DDEA: _eo_base_event_callback_call (eo_base_class.c:715) ==24509== by 0xE54B67A: eo_event_callback_call (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x91AB323: evas_object_event_callback_call (evas_callbacks.c:264) ==24509== by 0x91E8DE3: _evas_object_eo_base_destructor (evas_object_main.c:691) ==24509== by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x60A3019: _edje_object_eo_base_destructor (edje_smart.c:43) ==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 0x504CEF: _e_zoomap_smart_del (e_zoomap.c:266) ==24509== by 0x91F5ABC: evas_object_smart_del (evas_object_smart.c:1019) ==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 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 0x458C7A: _e_comp_object_util_del (e_comp_object.c:2402) ==24509== by 0x91AAE93: _eo_evas_object_cb (evas_callbacks.c:92) ==24509== by 0xE54DDEA: _eo_base_event_callback_call (eo_base_class.c:715) ==24509== by 0xE54B67A: eo_event_callback_call (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x91AB323: evas_object_event_callback_call (evas_callbacks.c:264) ==24509== by 0x91E8DE3: _evas_object_eo_base_destructor (evas_object_main.c:691) ==24509== by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99) ==24509== by 0x60A3019: _edje_object_eo_base_destructor (edje_smart.c:43) ==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 0x6091146: edje_match_callback_exec_check_finals (edje_match.c:556) ==24509== by 0x6091146: edje_match_callback_exec (edje_match.c:711) ==24509== by 0x60974AE: _edje_emit_cb (edje_program.c:1453) ==24509== by 0x60974AE: _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/modules/notification/e_mod_popup.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/notification/e_mod_popup.c b/src/modules/notification/e_mod_popup.c index 2f30e8a04..edfe96b2b 100644 --- a/src/modules/notification/e_mod_popup.c +++ b/src/modules/notification/e_mod_popup.c @@ -733,6 +733,7 @@ _notification_popdown(Popup_Data *popup, E_FREE_LIST(popup->mirrors, evas_object_del); if (popup->win) { + evas_object_event_callback_del_full(popup->win, EVAS_CALLBACK_DEL, _notification_popup_del_cb, popup); evas_object_hide(popup->win); evas_object_del(popup->win); }