From: Corey Farrell Date: Fri, 1 May 2015 18:22:03 +0000 (-0400) Subject: Astobj2: Fix initialization order of refdebug and AO2_DEBUG. X-Git-Tag: 14.0.0-beta1~1003^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f3cee125816486875c7d7d12dcf02dbf2b642d1;p=thirdparty%2Fasterisk.git Astobj2: Fix initialization order of refdebug and AO2_DEBUG. This ensures that refdebug is initialized before AO2_DEBUG if both are enabled, since AO2_DEBUG allocates a container. This change also makes AO2_DEBUG initialization critical, a failure will abort Asterisk startup. This is needed since the failure would be caused by reg_containers allocation failure, and that would result in a segmentation fault by ao2_container_register later in startup. ASTERISK-25048 #close Reported by: Corey Farrell Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244 --- diff --git a/main/asterisk.c b/main/asterisk.c index 86a190bc80..277604bf70 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -4260,7 +4260,10 @@ int main(int argc, char *argv[]) register_config_cli(); read_config_maps(); - astobj2_init(); + if (astobj2_init()) { + printf("Failed: astobj2_init\n%s", term_quit()); + exit(1); + } if (ast_opt_console) { if (el_hist == NULL || el == NULL) diff --git a/main/astobj2.c b/main/astobj2.c index f9dd8d490d..1db2dd42dc 100644 --- a/main/astobj2.c +++ b/main/astobj2.c @@ -1143,10 +1143,6 @@ int astobj2_init(void) { char ref_filename[1024]; - if (container_init() != 0) { - return -1; - } - if (ast_opt_ref_debug) { snprintf(ref_filename, sizeof(ref_filename), "%s/refs", ast_config_AST_LOG_DIR); ref_log = fopen(ref_filename, "w"); @@ -1155,6 +1151,11 @@ int astobj2_init(void) } } + if (container_init() != 0) { + fclose(ref_log); + return -1; + } + #if defined(AO2_DEBUG) ast_cli_register_multiple(cli_astobj2, ARRAY_LEN(cli_astobj2)); #endif /* defined(AO2_DEBUG) */