X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b7726f2e9e252f8442b008a34bca31716c3b6c6b..d3db5b503ce1dbf4078a047a4f4d47f791d01983:/src/simix/smx_global.c diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index 352e05fe65..7af670a28e 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -1,4 +1,5 @@ -/* Copyright (c) 2007-2012. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2013. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -109,7 +110,11 @@ void SIMIX_global_init(int *argc, char **argv) SIMIX_HOST_LEVEL = xbt_lib_add_level(host_lib,SIMIX_host_destroy); - if(sg_cfg_get_boolean("clean_atexit")) atexit(SIMIX_clean); + if (sg_cfg_get_boolean("clean_atexit")) + atexit(SIMIX_clean); + + if (_sg_cfg_exit_asap) + exit(0); } /** @@ -120,6 +125,9 @@ void SIMIX_global_init(int *argc, char **argv) */ static void SIMIX_clean(void) { +#ifdef HAVE_TRACING + TRACE_end(); +#endif #ifdef TIME_BENCH_PER_SR smx_ctx_raw_new_sr(); #endif @@ -158,7 +166,7 @@ static void SIMIX_clean(void) #ifdef TIME_BENCH_AMDAHL xbt_os_cputimer_stop(simix_global->timer_seq); - XBT_INFO("Amdhal timing informations. Sequential time: %lf; Parallel time: %lf", + XBT_INFO("Amdahl timing informations. Sequential time: %lf; Parallel time: %lf", xbt_os_timer_elapsed(simix_global->timer_seq), xbt_os_timer_elapsed(simix_global->timer_par)); xbt_os_timer_free(simix_global->timer_seq); @@ -329,12 +337,14 @@ void SIMIX_run(void) } /* Autorestart all process */ - char *hostname = NULL; - xbt_dynar_foreach(host_that_restart,iter,hostname) { - XBT_INFO("Restart processes on host: %s",hostname); - SIMIX_host_autorestart(SIMIX_host_get_by_name(hostname)); + if(host_that_restart) { + char *hostname = NULL; + xbt_dynar_foreach(host_that_restart,iter,hostname) { + XBT_INFO("Restart processes on host: %s",hostname); + SIMIX_host_autorestart(SIMIX_host_get_by_name(hostname)); + } + xbt_dynar_reset(host_that_restart); } - xbt_dynar_reset(host_that_restart); /* Clean processes to destroy */ SIMIX_process_empty_trash(); @@ -347,7 +357,7 @@ void SIMIX_run(void) TRACE_end(); #endif - XBT_WARN("Oops ! Deadlock or code not perfectly clean."); + XBT_CRITICAL("Oops ! Deadlock or code not perfectly clean."); SIMIX_display_process_status(); xbt_abort(); }