#include "mc_record.h"
#ifdef HAVE_MC
-#include "mc_server.h"
+#include "src/mc/Server.hpp"
#include <libunwind.h>
#include <xbt/mmalloc.h>
#include "../xbt/mmalloc/mmprivate.h"
#include "mc_comm_pattern.h"
#include "mc_request.h"
#include "mc_safety.h"
-#include "mc_memory_map.h"
#include "mc_snapshot.h"
#include "mc_liveness.h"
#include "mc_private.h"
{
mc_model_checker = new simgrid::mc::ModelChecker(pid, socket);
+ // TODO, avoid direct dependency on sg_cfg
+ mc_model_checker->process().privatized(sg_cfg_get_boolean("smpi/privatize_global_variables"));
+
mc_comp_times = xbt_new0(s_mc_comparison_times_t, 1);
/* Initialize statistics */
if (_sg_mc_comms_determinism)
XBT_INFO("Recv-deterministic : %s", !initial_global_state->recv_deterministic ? "No" : "Yes");
}
- if (getenv("SIMGRID_MC_SYSTEM_STATISTICS"))
- system("free");
+ if (getenv("SIMGRID_MC_SYSTEM_STATISTICS")){
+ int ret=system("free");
+ if(ret!=0)XBT_WARN("system call did not return 0, but %d",ret);
+ }
}
void MC_automaton_load(const char *file)
MC_print_statistics(mc_stats);
}
+void MC_report_crash(int status)
+{
+ XBT_INFO("**************************");
+ XBT_INFO("** CRASH IN THE PROGRAM **");
+ XBT_INFO("**************************");
+ if (WIFSIGNALED(status))
+ XBT_INFO("From signal: %s", strsignal(WTERMSIG(status)));
+ else if (WIFEXITED(status))
+ XBT_INFO("From exit: %i", WEXITSTATUS(status));
+ if (WCOREDUMP(status))
+ XBT_INFO("A core dump was generated by the system.");
+ else
+ XBT_INFO("No core dump was generated by the system.");
+ XBT_INFO("Counter-example execution trace:");
+ MC_record_dump_path(mc_stack);
+ MC_dump_stack_safety(mc_stack);
+ MC_print_statistics(mc_stats);
+}
+
void MC_invalidate_cache(void)
{
if (mc_model_checker)