- /* the receiver was supposed to destroy the comm after completion,
- * but the comm will actually never finish */
- action->comm.refcount++;
+ if (action->comm.refcount == 0) {
+ XBT_DEBUG("Increase the refcount before destroying it since it's detached");
+ /* I'm not supposed to destroy a detached comm from the sender side,
+ * unless there is no receiver matching the rdv */
+ action->comm.refcount++;
+ SIMIX_comm_destroy(action);
+ }
+ XBT_DEBUG("Don't destroy it since its refcount is %d",action->comm.refcount);
+ } else {
+ SIMIX_comm_destroy(action);