==19679== Invalid read of size 4
==19679== at 0x5CC90EF: _ecore_event_message_handler_handler_del (ecore_event_message_handler.c:194)
==19679== by 0x5CCA332: ecore_event_message_handler_del (ecore_event_message_handler.eo.c:22)
==19679== by 0x5CBC7E3: ecore_event_handler_del (ecore_events.c:51)
==19679== by 0x2A23F4F1: _batman_removed_cb (batman.c:579)
==19679== by 0x6A9A33D: _eo_evas_smart_cb (evas_object_smart.c:78)
==19679== by 0xC166F4D: _event_callback_call (eo_base_class.c:1560)
==19679== by 0xC16728E: _efl_object_event_callback_legacy_call (eo_base_class.c:1633)
==19679== by 0xC167334: efl_event_callback_legacy_call (eo_base_class.c:1636)
==19679== by 0x6A889CA: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1157)
==19679== by 0xC167334: efl_event_callback_legacy_call (eo_base_class.c:1636)
==19679== by 0x6A9CBA7: evas_object_smart_callback_call (evas_object_smart.c:1037)
==19679== by 0x500B1D: _gadget_remove (e_gadget.c:426)
==19679== by 0x5037A9: _gadget_menu_remove (e_gadget.c:1263)
==19679== by 0x552600: _e_menu_active_call (e_menu.c:2066)
==19679== by 0x55445E: _e_menu_cb_mouse_up (e_menu.c:2809)
==19679== by 0x5CC9933: _ecore_event_message_handler_efl_loop_message_handler_message_call (ecore_event_message_handler.c:359)
==19679== by 0x5CD31D1: efl_loop_message_handler_message_call (efl_loop_message_handler.eo.c:14)
==19679== by 0x5CCDA73: _efl_loop_message_process (efl_loop.c:681)
==19679== by 0x5CCDC64: efl_loop_message_process (efl_loop.c:711)
==19679== by 0x5CC7453: _ecore_main_loop_iterate_internal (ecore_main.c:2444)
==19679== by 0x5CC457E: _ecore_main_loop_begin (ecore_main.c:1173)
==19679== by 0x5CCC0CD: _efl_loop_begin (efl_loop.c:97)
==19679== by 0x5CCED13: efl_loop_begin (efl_loop.eo.c:50)
==19679== by 0x5CC46F7: ecore_main_loop_begin (ecore_main.c:1246)
==19679== by 0x5476B6: main (e_main.c:1092)
==19679== Address 0x212af268 is 40 bytes inside a block of size 48 free'd
==19679== at 0x4C30D18: free (vg_replace_malloc.c:530)
==19679== by 0x5CC9BE6: _ecore_event_message_handler_efl_loop_message_handler_message_call (ecore_event_message_handler.c:389)
==19679== by 0x5CD31D1: efl_loop_message_handler_message_call (efl_loop_message_handler.eo.c:14)
==19679== by 0x5CCDA73: _efl_loop_message_process (efl_loop.c:681)
==19679== by 0x5CCDC64: efl_loop_message_process (efl_loop.c:711)
==19679== by 0x5CC7453: _ecore_main_loop_iterate_internal (ecore_main.c:2444)
==19679== by 0x5CC457E: _ecore_main_loop_begin (ecore_main.c:1173)
==19679== by 0x5CCC0CD: _efl_loop_begin (efl_loop.c:97)
==19679== by 0x5CCED13: efl_loop_begin (efl_loop.eo.c:50)
==19679== by 0x5CC46F7: ecore_main_loop_begin (ecore_main.c:1246)
==19679== by 0x5476B6: main (e_main.c:1092)
==19679== Block was alloc'd at
==19679== at 0x4C31A1E: calloc (vg_replace_malloc.c:711)
==19679== by 0x5CC8EE1: _ecore_event_message_handler_handler_add (ecore_event_message_handler.c:148)
==19679== by 0x5CCA0FB: ecore_event_message_handler_add (ecore_event_message_handler.eo.c:14)
==19679== by 0x5CBC790: ecore_event_handler_add (ecore_events.c:35)
==19679== by 0x2A23FB87: _batman_created_cb (batman.c:661)
==19679== by 0x6A9A33D: _eo_evas_smart_cb (evas_object_smart.c:78)
==19679== by 0xC166F4D: _event_callback_call (eo_base_class.c:1560)
==19679== by 0xC16728E: _efl_object_event_callback_legacy_call (eo_base_class.c:1633)
==19679== by 0xC167334: efl_event_callback_legacy_call (eo_base_class.c:1636)
==19679== by 0x6A889CA: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1157)
==19679== by 0xC167334: efl_event_callback_legacy_call (eo_base_class.c:1636)
==19679== by 0x6A9CBA7: evas_object_smart_callback_call (evas_object_smart.c:1037)
==19679== by 0x501172: _gadget_object_create (e_gadget.c:548)
==19679== by 0x506B90: e_gadget_type_add (e_gadget.c:2056)
==19679== by 0x2A23CA44: sysinfo_init (mod.c:161)
==19679== by 0x2A23CCF5: e_modapi_init (mod.c:203)
==19679== by 0x556814: e_module_enable (e_module.c:524)
==19679== by 0x555DF9: e_module_all_load (e_module.c:324)
==19679== by 0x554EFF: _module_done_cb (e_module.c:73)
==19679== by 0x73531C1: eio_async_end (eio_file.c:510)
==19679== by 0x5CF8D67: _ecore_thread_kill (ecore_thread.c:229)
==19679== by 0x5CF8E1C: _ecore_thread_handler (ecore_thread.c:256)
==19679== by 0x5CB97D0: _ecore_main_call_flush (ecore.c:1090)
==19679== by 0x5CB9858: _thread_callback (ecore.c:1101)
==19679== by 0x5CF51F3: _ecore_pipe_handler_call (ecore_pipe.c:602)
==19679== by 0x5CF5529: _ecore_pipe_read (ecore_pipe.c:725)
==19679== by 0x5CC3677: _ecore_call_fd_cb (ecore_private.h:476)
==19679== by 0x5CC6793: _ecore_main_fd_handlers_call (ecore_main.c:2051)
==19679== by 0x5CC7414: _ecore_main_loop_iterate_internal (ecore_main.c:2439)
==19679== by 0x5CC457E: _ecore_main_loop_begin (ecore_main.c:1173)
==19679== by 0x5CCC0CD: _efl_loop_begin (efl_loop.c:97)
==19679== by 0x5CCED13: efl_loop_begin (efl_loop.eo.c:50)
==19679== by 0x5CC46F7: ecore_main_loop_begin (ecore_main.c:1246)
==19679== by 0x5476B6: main (e_main.c:1092)
This cleans up how sysinfo manages object vs thread lifetimes. If thread is still alive dependent on aspects that need to be freed in the gadget removal process, it defers that cleanup from the remove callback to the thread end callback. As for the combination sysinfo gadget, each gadget inside of sysinfo will set a done flag alerting that the cleanup of the combination gadget can happen once all threads are done.
This fixes T5694
So yeah, I've literally used sed to replace every occurrence of
ecore_time_add() with ecore_timer_loop_add() because I'm reasonably
confident that no part of E has a legitimate need for timer based on the
exact current time.
It would be really nice if I'm not wrong. :)
The reason for this is the incredible spew of clock_gettime() calls I'm
seeing on an ARM system (that should have a vdso for gettime, but...)
This can amount to thousands of system calls per second.
#YOLO