- if (MC_server_init(child, socket))
- return MC_SERVER_ERROR;
- XBT_DEBUG("Server initialized");
- MC_server_run();
- return 0;
+ if (mc_model_checker)
+ xbt_die("MC server already present");
+ try {
+ mc_mode = MC_MODE_SERVER;
+ mc_model_checker = new simgrid::mc::ModelChecker(child, socket);
+ mc_model_checker->start();
+ int res = 0;
+ if (_sg_mc_comms_determinism || _sg_mc_send_determinism)
+ res = MC_modelcheck_comm_determinism();
+ else if (!_sg_mc_property_file || _sg_mc_property_file[0] == '\0')
+ res = MC_modelcheck_safety();
+ else
+ res = MC_modelcheck_liveness();
+ mc_model_checker->shutdown();
+ return res;
+ }
+ catch(std::exception& e) {
+ XBT_ERROR("Exception: %s", e.what());
+ return SIMGRID_MC_EXIT_ERROR;
+ }