Start VM with 8 multiple-function block devs, hot-removing those block devs by 'device_del ...' would cause qemu abort.
object_ref() is called in object_property_add_child(), but we don't unref it in object_property_del_child(). | (qemu) device_del virti0-0-0 | (qemu) ** | ERROR:qom/object.c:389:object_delete: assertion failed: (obj->ref == 0) Signed-off-by: Amos Kong <ak...@redhat.com> --- qom/object.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/qom/object.c b/qom/object.c index e721fc2..9da6b59 100644 --- a/qom/object.c +++ b/qom/object.c @@ -320,6 +320,7 @@ static void object_property_del_child(Object *obj, Object *child, Error **errp) QTAILQ_FOREACH(prop, &obj->properties, node) { if (strstart(prop->type, "child<", NULL) && prop->opaque == child) { object_property_del(obj, prop->name, errp); + object_unref(child); break; } }