diff mbox series

[v2,06/10] qom/object: Display more helpful message when a parent is missing

Message ID 20200121110349.25842-7-philmd@redhat.com (mailing list archive)
State New, archived
Headers show
Series Cleanups around the 'current_machine' global variable | expand

Commit Message

Philippe Mathieu-Daudé Jan. 21, 2020, 11:03 a.m. UTC
QEMU object model is scarse in documentation. Some calls are
recursive, and it might be hard to figure out even trivial issues.

We can avoid developers to waste time in a debugging session by
displaying a simple error message.

This commit is also similar to e02bdf1cecd2 ("Display more helpful
message when an object type is missing").

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v2: New patch
---
 qom/object.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Cornelia Huck Jan. 21, 2020, 1:54 p.m. UTC | #1
On Tue, 21 Jan 2020 12:03:45 +0100
Philippe Mathieu-Daudé <philmd@redhat.com> wrote:

> QEMU object model is scarse in documentation. Some calls are
> recursive, and it might be hard to figure out even trivial issues.
> 
> We can avoid developers to waste time in a debugging session by
> displaying a simple error message.
> 
> This commit is also similar to e02bdf1cecd2 ("Display more helpful
> message when an object type is missing").
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> v2: New patch
> ---
>  qom/object.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/qom/object.c b/qom/object.c
> index 0d971ca897..bc13a55094 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -173,7 +173,11 @@ static TypeImpl *type_get_parent(TypeImpl *type)
>  {
>      if (!type->parent_type && type->parent) {
>          type->parent_type = type_get_by_name(type->parent);
> -        g_assert(type->parent_type != NULL);
> +        if (!type->parent_type) {
> +            fprintf(stderr, "Object '%s' missing its parent '%s'\n",

Maybe s/missing/is missing/ ?

Anyway, a real improvement :)

> +                    type->name, type->parent);
> +            abort();
> +        }
>      }
>  
>      return type->parent_type;

Reviewed-by: Cornelia Huck <cohuck@redhat.com>
diff mbox series

Patch

diff --git a/qom/object.c b/qom/object.c
index 0d971ca897..bc13a55094 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -173,7 +173,11 @@  static TypeImpl *type_get_parent(TypeImpl *type)
 {
     if (!type->parent_type && type->parent) {
         type->parent_type = type_get_by_name(type->parent);
-        g_assert(type->parent_type != NULL);
+        if (!type->parent_type) {
+            fprintf(stderr, "Object '%s' missing its parent '%s'\n",
+                    type->name, type->parent);
+            abort();
+        }
     }
 
     return type->parent_type;