qemu-discuss
[Top][All Lists]
Advanced

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

Re:‏ Crash in memory_region_init_ram call chain, when --bios command lin


From: Alyosha Shevandin
Subject: Re:‏ Crash in memory_region_init_ram call chain, when --bios command line parameter is presented.
Date: Tue, 14 Feb 2023 11:54:39 +0000

Thank you for your answer. I belive that 'owner' parameter is initialized: 1) without --bios parameter the code does not crash; 2) I check the the owner parameter before;
Here is the fragment of my code:
static void  my_soc_init(MachineState *machine)
{     

      MySocState* state = OBJECT_CHECK(MySocState, machine, TYPE_MY_SOC);
      if (!state) {
            error_report("failed to convert from the parent MachineState to derived MySocState");
            exit(1);
      }

      /*
       * Setup the memories.
       */
      memory_region_init_ram(&state->ram,
                  OBJECT(state),
                  "mysoc.ram",
                  mysoc_memmap[MYSOCK_DEV_RAM].size,
                  &error_abort);

Regards,
Aleksey

מאת: Peter Maydell <peter.maydell@linaro.org>
‏‏נשלח: יום שלישי 14 פברואר 2023 13:07
‏‏אל: Alyosha Shevandin <shevandin_al@hotmail.com>
עותק: qemu-discuss@nongnu.org <qemu-discuss@nongnu.org>
‏‏נושא: Re: Crash in memory_region_init_ram call chain, when --bios command line parameter is presented.
 
On Tue, 14 Feb 2023 at 11:03, Alyosha Shevandin
<shevandin_al@hotmail.com> wrote:
>
>
> I would appreciate any clue about the crash.
>
> When I start my custom SoC emulation and the –bios command line parameter us presented, the QEMU processes crashes before the custom code even tries to load the firmware. It crashes in the *memory_region_init_ram* call chain with the follow stack:
>
>
> #0 0x00005613255a6932 in object_class_dynamic_cast_assert
>
> (class=0x56006f6b756b, typename=0x5613259e94ee "bus", file=0x5613259e94a8 "/project/users/ashevandin/qemu-speedata/include/hw/qdev-core.h", line=217, func=0x5613259e9828 <__func__.18> "BUS_GET_CLASS")
>
> at ../qom/object.c:963
>
> #1 0x000056132559e3a3 in BUS_GET_CLASS (obj=0x561326fd7830) at /project/users/ashevandin/qemu-speedata/include/hw/qdev-core.h:217
>
> #2 0x000056132559f434 in qdev_get_dev_path (dev=0x561326d27800) at ../hw/core/qdev.c:422
>
> #3 0x00005613254f489d in qemu_ram_set_idstr (new_block=0x56132710acc0, name=0x5613270e1760 "speedata.callisto.ddr1", dev=0x561326d27800) at ../softmmu/physmem.c:1766
>
> #4 0x00005613250a1069 in vmstate_register_ram (mr=0x561326d27950, dev=0x561326d27800) at ../migration/savevm.c:3104
>
> #5 0x00005613254ee0c8 in memory_region_init_ram (mr=0x561326d27950, owner=0x561326d27800, name=0x561325983052 "speedata.callisto.ddr1", size=4294967296, errp=0x5613262c6178 <error_abort>)
>
> at ../softmmu/memory.c:3543

Looking at the back trace, my guess is that you've passed in
an 'owner' argument to memory_region_init_ram() that isn't
a valid initialized device object.

-- PMM

reply via email to

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