if is detached (dsend)
Currently, with dsend action, the wait of src_proc is not necessary to
finish the communication. In this case, only dst_proc removes this
communication from its list and destroys it, if src_proc is always
running. When src_proc makes a process_cleanup after that, it
retrieves this communication in its list while it doesn't exist
anymore and thinks that this communication isn't for it. This led to a
simulation error.
simcall->issuer->waiting_action = NULL;
xbt_fifo_remove(simcall->issuer->comms, action);
+ if(action->comm.detached){
+ if(simcall->issuer == action->comm.src_proc){
+ if(action->comm.dst_proc)
+ xbt_fifo_remove(action->comm.dst_proc->comms, action);
+ }
+ if(simcall->issuer == action->comm.dst_proc){
+ if(action->comm.src_proc)
+ xbt_fifo_remove(action->comm.src_proc->comms, action);
+ }
+ }
SIMIX_simcall_answer(simcall);
destroy_count++;
}