Author: mikej Date: Wed Mar 19 22:05:34 2008 New Revision: 7943 Modified: freeswitch/trunk/src/switch_core.c freeswitch/trunk/src/switch_core_memory.c freeswitch/trunk/src/switch_time.c Log: fix shutdown race destroying memory pools. Modified: freeswitch/trunk/src/switch_core.c ============================================================================== --- freeswitch/trunk/src/switch_core.c (original) +++ freeswitch/trunk/src/switch_core.c Wed Mar 19 22:05:34 2008 @@ -1049,6 +1049,7 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "End existing sessions\n"); switch_core_session_hupall(SWITCH_CAUSE_SYSTEM_SHUTDOWN); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Clean up modules.\n"); + switch_core_memory_stop(); switch_loadable_module_shutdown(); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Closing Event Engine.\n"); @@ -1061,7 +1062,6 @@ switch_rtp_shutdown(); switch_xml_destroy(); - switch_core_memory_stop(); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Finalizing Shutdown.\n"); switch_log_shutdown(); Modified: freeswitch/trunk/src/switch_core_memory.c ============================================================================== --- freeswitch/trunk/src/switch_core_memory.c (original) +++ freeswitch/trunk/src/switch_core_memory.c Wed Mar 19 22:05:34 2008 @@ -312,16 +312,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_destroy_memory_pool(switch_memory_pool_t **pool, const char *file, const char *func, int line) { - //char tmp[128] = ""; - - switch_assert(pool != NULL); #ifdef DEBUG_ALLOC2 switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "Free Pool\n"); #endif - if (switch_queue_push(memory_manager.pool_queue, *pool) != SWITCH_STATUS_SUCCESS) { + if ((memory_manager.pool_thread_running != 1) || (switch_queue_push(memory_manager.pool_queue, *pool) != SWITCH_STATUS_SUCCESS)) { apr_pool_destroy(*pool); } *pool = NULL; Modified: freeswitch/trunk/src/switch_time.c ============================================================================== --- freeswitch/trunk/src/switch_time.c (original) +++ freeswitch/trunk/src/switch_time.c Wed Mar 19 22:05:34 2008 @@ -421,7 +421,6 @@ switch_yield(10000); } } - switch_core_destroy_memory_pool(&module_pool); return SWITCH_STATUS_SUCCESS; }
participants (1)
-
Freeswitch SVN