- while ((state = xbt_fifo_shift(mc_stack)) != NULL) {
- req = MC_state_get_executed_request(state, &value);
- xbt_fifo_foreach(mc_stack, item, prev_state, mc_state_t) {
- if(MC_request_depend(req, MC_state_get_executed_request(prev_state, &value))){
- if(XBT_LOG_ISENABLED(mc_dpor, xbt_log_priority_debug)){
- DEBUG0("Dependent Transitions:");
- req_str = MC_request_to_string(MC_state_get_executed_request(prev_state, &value));
- DEBUG2("%s (state=%p)", req_str, prev_state);
- xbt_free(req_str);
- req_str = MC_request_to_string(req);
- DEBUG2("%s (state=%p)", req_str, state);
- xbt_free(req_str);
+
+ while ((state = xbt_fifo_shift(mc_stack_safety)) != NULL) {
+
+ for(i=0; i<simix_process_maxpid; i++)
+ proc_eval[i] = 0;
+
+ if(MC_state_interleave_size(state) == 0){
+ req = MC_state_get_internal_request(state);
+ xbt_fifo_foreach(mc_stack_safety, item, prev_state, mc_state_t) {
+ if(MC_request_depend(req, MC_state_get_internal_request(prev_state))){
+ if(XBT_LOG_ISENABLED(mc_dpor, xbt_log_priority_debug)){
+ XBT_DEBUG("Dependent Transitions:");
+ prev_req = MC_state_get_executed_request(prev_state, &value);
+ req_str = MC_request_to_string(prev_req, value);
+ XBT_DEBUG("%s (state=%p)", req_str, prev_state);
+ xbt_free(req_str);
+ prev_req = MC_state_get_executed_request(state, &value);
+ req_str = MC_request_to_string(prev_req, value);
+ XBT_DEBUG("%s (state=%p)", req_str, state);
+ xbt_free(req_str);
+ }
+
+ break;
+
+ }else if(req->issuer == MC_state_get_executed_request(prev_state, &value)->issuer){
+
+ break;
+
+ }else if(proc_eval[MC_state_get_executed_request(prev_state, &value)->issuer->pid] == 0){
+
+ MC_state_remove_interleave_process(prev_state, MC_state_get_executed_request(prev_state, &value)->issuer);
+