- xbt_assert(ownership->owner == self, "safety check failed: %s is not owner of the object it's releasing.",
- self->get_cname());
- ownership->owner = nullptr;
+ xbt_assert(ownership->owner == self,
+ "safety check failed: %s is not owner of the object it's releasing. That object owned by %s.",
+ self->get_cname(), (ownership->owner == nullptr ? "nobody" : ownership->owner->get_cname()));
+ ownership->recursive_depth--;
+ if (ownership->recursive_depth == 0)
+ ownership->owner = nullptr;