+RecordTrace SafetyChecker::getRecordTrace() // override
+{
+ RecordTrace res;
+ for (simgrid::mc::State* state : mc_stack) {
+ int value = 0;
+ smx_simcall_t saved_req = MC_state_get_executed_request(state, &value);
+ const smx_process_t issuer = MC_smx_simcall_get_issuer(saved_req);
+ const int pid = issuer->pid;
+ res.push_back(RecordTraceElement(pid, value));
+ }
+ return res;
+}
+
+std::vector<std::string> SafetyChecker::getTextualTrace() // override
+{
+ std::vector<std::string> trace;
+ for (simgrid::mc::State* state : mc_stack) {
+ int value;
+ smx_simcall_t req = MC_state_get_executed_request(state, &value);
+ if (req) {
+ char* req_str = simgrid::mc::request_to_string(
+ req, value, simgrid::mc::RequestType::executed);
+ trace.push_back(req_str);
+ xbt_free(req_str);
+ }
+ }
+ return trace;
+}
+