On Sat, 27 Apr 2019 15:56:42 +0200
Philippe Mathieu-Daudé <phi...@redhat.com> wrote:

> 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 
> (data=data@entry=0x55c4bdf239e0, size=size@entry=2464, type=<optimized out>) 
> at /source/qemu/qom/object.c:454
>   #5  0x000055c4bcac6e6d in object_initialize 
> (data=data@entry=0x55c4bdf239e0, size=size@entry=2464, 
> typename=typename@entry=0x55c4bcc7c643 "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)
> 
> Since the assert(type) check in object_initialize_with_type() is
> now impossible, remove it.
> 
> Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com>
> ---
>  qom/object.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)

Way more helpful error message :)

Reviewed-by: Cornelia Huck <coh...@redhat.com>

Reply via email to