qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qom/object: Display more helpful message when a


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH] qom/object: Display more helpful message when an object type is missing
Date: Mon, 06 May 2019 10:07:26 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Philippe Mathieu-Daudé <address@hidden> writes:

> When writing a new board, adding device which uses other devices
> (container) or simply refactoring, one can discover the hard way
> his machine misses some devices. In the case of containers, the
> error is not obvious:
>
>   $ qemu-system-microblaze -M xlnx-zynqmp-pmu
>   **
>   ERROR:/source/qemu/qom/object.c:454:object_initialize_with_type: assertion 
> failed: (type != NULL)
>   Aborted (core dumped)
>
> And we have to look at the coredump to figure the error:
>
>   (gdb) bt
>   #1  0x00007f84773cf895 in abort () at /lib64/libc.so.6
>   #2  0x00007f847961fb53 in  () at /lib64/libglib-2.0.so.0
>   #3  0x00007f847967a4de in g_assertion_message_expr () at 
> /lib64/libglib-2.0.so.0
>   #4  0x000055c4bcac6c11 in object_initialize_with_type (address@hidden, 
> address@hidden, type=<optimized out>) at /source/qemu/qom/object.c:454
>   #5  0x000055c4bcac6e6d in object_initialize (address@hidden, 
> address@hidden, address@hidden "xlnx.zynqmp_ipi") at 
> /source/qemu/qom/object.c:474
>   #6  0x000055c4bc9ea474 in xlnx_zynqmp_pmu_init (machine=0x55c4bdd46000) at 
> /source/qemu/hw/microblaze/xlnx-zynqmp-pmu.c:176
>   #7  0x000055c4bca3b6cb in machine_run_board_init (machine=0x55c4bdd46000) 
> at /source/qemu/hw/core/machine.c:1030
>   #8  0x000055c4bc95f6d2 in main (argc=<optimized out>, argv=<optimized out>, 
> envp=<optimized out>) at /source/qemu/vl.c:4479
>
> Since the caller knows the type name requested, we can simply display it
> to ease development.
>
> With this patch applied we get:
>
>   $ qemu-system-microblaze -M xlnx-zynqmp-pmu
>   qemu-system-microblaze: missing object type 'xlnx.zynqmp_ipi'
>   Aborted (core dumped)

I'd phrase it like "object type '%s' missing from build".  Suggestion,
not demand.

> Since the assert(type) check in object_initialize_with_type() is
> now impossible, remove it.

You're right, it's impossible (I checked).  Are we sure it'll stay
impossible?

> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
>  qom/object.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/qom/object.c b/qom/object.c
> index e3206d6799e..b1ba62c5b9e 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -28,6 +28,7 @@
>  #include "qapi/qmp/qbool.h"
>  #include "qapi/qmp/qnum.h"
>  #include "qapi/qmp/qstring.h"
> +#include "qemu/error-report.h"
>  
>  #define MAX_INTERFACES 32
>  
> @@ -451,7 +452,6 @@ static void object_initialize_with_type(void *data, 
> size_t size, TypeImpl *type)
>  {
>      Object *obj = data;
>  
> -    g_assert(type != NULL);
>      type_initialize(type);
>  
>      g_assert(type->instance_size >= sizeof(Object));
> @@ -471,6 +471,11 @@ void object_initialize(void *data, size_t size, const 
> char *typename)
>  {
>      TypeImpl *type = type_get_by_name(typename);
>  
> +    if (!type) {
> +        error_report("missing object type '%s'", typename);
> +        abort();
> +    }
> +
>      object_initialize_with_type(data, size, type);
>  }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]