X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f6a147ae4d559391e52232a5d0cde1cd5adf9e62..220a6109b767302515959ba7b80a36cfd9fd94ca:/src/simix/smx_global.c diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index eb212911ac..3bb6bff54a 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -13,6 +13,14 @@ #include "mc/mc.h" #include "simgrid/sg_config.h" +#ifdef HAVE_MC +#include "mc/mc_private.h" +#endif + +#ifdef HAVE_SMPI +#include "smpi/private.h" +#endif + XBT_LOG_NEW_CATEGORY(simix, "All SIMIX categories"); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_kernel, simix, "Logging specific to SIMIX (kernel)"); @@ -31,11 +39,11 @@ int _sg_do_verbose_exit = 1; static void _XBT_CALL inthandler(int ignored) { if ( _sg_do_verbose_exit ) { - XBT_INFO("CTRL-C pressed. Displaying status and bailing out"); + XBT_INFO("CTRL-C pressed. The current status will be displayed before exit (disable that behavior with option 'verbose-exit')."); SIMIX_display_process_status(); } else { - XBT_INFO("CTRL-C pressed. bailing out without displaying because verbose-exit is disabled"); + XBT_INFO("CTRL-C pressed, exiting. Hiding the current process status since 'verbose-exit' is set to false."); } exit(1); } @@ -58,7 +66,23 @@ static void _XBT_CALL segvhandler(int signum, siginfo_t *siginfo, void *context) "siginfo = {si_signo = %d, si_errno = %d, si_code = %d, si_addr = %p}\n", siginfo->si_signo, siginfo->si_errno, siginfo->si_code, siginfo->si_addr); } + } else if (siginfo->si_signo == SIGSEGV) { + fprintf(stderr, "Segmentation fault.\n"); +#ifdef HAVE_SMPI + if (smpi_enabled() && !smpi_privatize_global_variables) { + fprintf(stderr, + "Try to enable SMPI variable privatization with --cfg=smpi/privatize_global_variables:yes.\n"); + } +#endif } +#ifdef HAVE_MC + if (MC_is_active()) { + if (mc_stack) { + MC_dump_stack_safety(mc_stack); + } + MC_print_statistics(mc_stats); + } +#endif raise(signum); }