- allVms_.erase(find(allVms_.begin(), allVms_.end(), piface_));
-
- /* dirty page tracking */
- unsigned int size = xbt_dict_size(dp_objs);
- static bool already_warned = false;
- if (size > 0 && !already_warned) {
- xbt_dict_cursor_t cursor = nullptr;
- xbt_dict_cursor_first(dp_objs, &cursor);
- XBT_WARN("Dirty page tracking: %u pending task(s) on a destroyed VM (first one is %s).\n"
- "If you don't understand why your task was not properly removed, please report that bug.\n"
- "This is a known bug if you turned the host off during the VM execution.\n"
- "Please remind us of that problem at some point: our code base is not ready to fix this harmless issue in "
- "2016, sorry.",
- size, (xbt_log_no_loc ? "(name hidden)" : xbt_dict_cursor_get_key(cursor)));
- xbt_dict_cursor_free(&cursor);
- already_warned = true;
- }
- xbt_dict_free(&dp_objs);
+ /* I was already removed from the allVms set if the VM was destroyed cleanly */
+ auto iter = find(allVms_.begin(), allVms_.end(), piface_);
+ if (iter != allVms_.end())
+ allVms_.erase(iter);