barbieri pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=482437ee14885a21a94ee0d110474253ae3202ab
commit 482437ee14885a21a94ee0d110474253ae3202ab Author: Gustavo Sverzut Barbieri <[email protected]> Date: Mon Dec 19 11:37:24 2016 -0200 ecore_con/ecore_ipc: keep log domain alive after shutdown. These legacy API had the nasty behavior of keeping handles alive until the pending events were dispatched, this could happen after the module itself was shutdown, resulting in log to unregistered domains. Then do not unregister the domain -- eina_shutdown will avoid leaks anyway. --- src/lib/ecore_con/ecore_con.c | 15 ++++++++++----- src/lib/ecore_ipc/ecore_ipc.c | 22 +++++++++++++++------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c index 6954d17..58e0805 100644 --- a/src/lib/ecore_con/ecore_con.c +++ b/src/lib/ecore_con/ecore_con.c @@ -92,10 +92,13 @@ ecore_con_init(void) if (!ecore_init()) goto ecore_err; - _ecore_con_log_dom = eina_log_domain_register - ("ecore_con", ECORE_CON_DEFAULT_LOG_COLOR); if (_ecore_con_log_dom < 0) - goto ecore_con_log_error; + { + _ecore_con_log_dom = eina_log_domain_register + ("ecore_con", ECORE_CON_DEFAULT_LOG_COLOR); + if (_ecore_con_log_dom < 0) + goto ecore_con_log_error; + } ecore_con_mempool_init(); ecore_con_legacy_init(); @@ -159,8 +162,10 @@ ecore_con_shutdown(void) ecore_con_legacy_shutdown(); - eina_log_domain_unregister(_ecore_con_log_dom); - _ecore_con_log_dom = -1; + /* do not unregister log domain as ecore_con_servers may be pending deletion + * due Ecore_Event. + */ + ecore_shutdown(); #ifdef HAVE_EVIL evil_shutdown(); diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c index 17f7744..dfacf93 100644 --- a/src/lib/ecore_ipc/ecore_ipc.c +++ b/src/lib/ecore_ipc/ecore_ipc.c @@ -323,13 +323,18 @@ ecore_ipc_init(void) if (++_ecore_ipc_init_count != 1) return _ecore_ipc_init_count; - _ecore_ipc_log_dom = eina_log_domain_register - ("ecore_ipc", ECORE_IPC_DEFAULT_LOG_COLOR); - if(_ecore_ipc_log_dom < 0) + + if (_ecore_ipc_log_dom < 0) { - EINA_LOG_ERR("Impossible to create a log domain for the Ecore IPC module."); - return --_ecore_ipc_init_count; + _ecore_ipc_log_dom = eina_log_domain_register + ("ecore_ipc", ECORE_IPC_DEFAULT_LOG_COLOR); + if(_ecore_ipc_log_dom < 0) + { + EINA_LOG_ERR("Impossible to create a log domain for the Ecore IPC module."); + return --_ecore_ipc_init_count; + } } + if (!ecore_con_init()) return --_ecore_ipc_init_count; @@ -378,8 +383,11 @@ ecore_ipc_shutdown(void) #endif ecore_con_shutdown(); - eina_log_domain_unregister(_ecore_ipc_log_dom); - _ecore_ipc_log_dom = -1; + + /* do not unregister log domain as ecore_ipc_servers may be pending deletion + * due Ecore_Event. + */ + return _ecore_ipc_init_count; } --
