diff mbox

qemu 2.0.0-rc2 crash

Message ID 5346E53B.8020708@redhat.com
State New
Headers show

Commit Message

Cole Robinson April 10, 2014, 6:38 p.m. UTC
On 04/10/2014 02:15 PM, Cole Robinson wrote:
> On 04/10/2014 12:39 PM, Marcel Apfelbaum wrote:
>> On Thu, 2014-04-10 at 18:24 +0200, Marcin Gibuła wrote:
>>> W dniu 2014-04-10 15:43, Marcel Apfelbaum pisze:
>>>> On Thu, 2014-04-10 at 14:55 +0200, Marcin Gibuła wrote:
>>>>> Hi,
>>>>>
>>>>> I've been playing with QEMU 2.0-rc2 and found a crash that isn't there
>>>>> in 1.7.1.
>>>> Hi Marcin,
>>>> Thanks for reporting the bug!
>>>>
>>>> Do you have a development environment?
>>>> If you do, and the reproduction is fast (and you already have a setup),
>>>> a git bisect to find the problematic commit would be appreciated,
>>>
>>> Hi,
>>>
>>> yes, it's on development environment. If you could point me to some 
>>> quick guide to bisecting qemu, I'll be happy to do it.
>>
>> Sure! Thanks for helping.
>>
>> 1. Start:
>>      git bisect start
>>      git bisect good <commit hash or tag name of the version that works> (Ex: v1.7.1)
>>      git bisect bad <commit hash or tag name of the non working version> (Ex: HEAD)
>> 2. Git will checkout commits for you and you have to check and answer:
>>      git bisect good or git bisect bad 
>> 3. Git will show you the first bad commit.
>>
>> A more detailed version here:
>> http://git-scm.com/book/en/Git-Tools-Debugging-with-Git
>> Look for git-bisect.
> 
> Actually I was just independently bisecting this :) Culprit is:
> 
> commit 9561fda8d90e176bef598ba87c42a1bd6ad03ef7
> Author: Stefan Hajnoczi <stefanha@redhat.com>
> Date:   Wed Mar 19 08:58:55 2014 +0100
> 
>     qom: Make QOM link property unref optional
> 
> Simple reproducer:
> 
> ./x86_64-softmmu/qemu-system-x86_64 -qmp unix:./qmp.sock,server
> 
> ./scripts/qmp/qmp-shell ./qmp.sock
> (QEMU) qom-list path=//machine/i440fx/pci.0/child[2]
> 
> Seems like trying to qom-list any link property will crash
> 

I think this is the fix:


The commit mentioned above changed the type of opaque for link properties, but
forgot to update this site. I'll send a top level patch.

- Cole

Comments

Marcel Apfelbaum April 10, 2014, 6:46 p.m. UTC | #1
On Thu, 2014-04-10 at 14:38 -0400, Cole Robinson wrote:
> On 04/10/2014 02:15 PM, Cole Robinson wrote:
> > On 04/10/2014 12:39 PM, Marcel Apfelbaum wrote:
> >> On Thu, 2014-04-10 at 18:24 +0200, Marcin Gibuła wrote:
> >>> W dniu 2014-04-10 15:43, Marcel Apfelbaum pisze:
> >>>> On Thu, 2014-04-10 at 14:55 +0200, Marcin Gibuła wrote:
> >>>>> Hi,
> >>>>>
> >>>>> I've been playing with QEMU 2.0-rc2 and found a crash that isn't there
> >>>>> in 1.7.1.
> >>>> Hi Marcin,
> >>>> Thanks for reporting the bug!
> >>>>
> >>>> Do you have a development environment?
> >>>> If you do, and the reproduction is fast (and you already have a setup),
> >>>> a git bisect to find the problematic commit would be appreciated,
> >>>
> >>> Hi,
> >>>
> >>> yes, it's on development environment. If you could point me to some 
> >>> quick guide to bisecting qemu, I'll be happy to do it.
> >>
> >> Sure! Thanks for helping.
> >>
> >> 1. Start:
> >>      git bisect start
> >>      git bisect good <commit hash or tag name of the version that works> (Ex: v1.7.1)
> >>      git bisect bad <commit hash or tag name of the non working version> (Ex: HEAD)
> >> 2. Git will checkout commits for you and you have to check and answer:
> >>      git bisect good or git bisect bad 
> >> 3. Git will show you the first bad commit.
> >>
> >> A more detailed version here:
> >> http://git-scm.com/book/en/Git-Tools-Debugging-with-Git
> >> Look for git-bisect.
> > 
> > Actually I was just independently bisecting this :) Culprit is:
> > 
> > commit 9561fda8d90e176bef598ba87c42a1bd6ad03ef7
> > Author: Stefan Hajnoczi <stefanha@redhat.com>
> > Date:   Wed Mar 19 08:58:55 2014 +0100
> > 
> >     qom: Make QOM link property unref optional
> > 
> > Simple reproducer:
> > 
> > ./x86_64-softmmu/qemu-system-x86_64 -qmp unix:./qmp.sock,server
> > 
> > ./scripts/qmp/qmp-shell ./qmp.sock
> > (QEMU) qom-list path=//machine/i440fx/pci.0/child[2]
> > 
> > Seems like trying to qom-list any link property will crash
> > 
> 
> I think this is the fix:
> 
> diff --git a/qom/object.c b/qom/object.c
> index f4de619..9a730e7 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1225,7 +1225,8 @@ Object *object_resolve_path_component(Object *parent, cons
>      }
> 
>      if (object_property_is_link(prop)) {
> -        return *(Object **)prop->opaque;
> +        LinkProperty *lprop = prop->opaque;
> +        return *lprop->child;
Seems OK to me, but I am not so familiar with this part...
maybe we'll get a feedback from the maintainers.

Thanks,
Marcel

>      } else if (object_property_is_child(prop)) {
>          return prop->opaque;
>      } else {
> 
> The commit mentioned above changed the type of opaque for link properties, but
> forgot to update this site. I'll send a top level patch.
> 
> - Cole
>
diff mbox

Patch

diff --git a/qom/object.c b/qom/object.c
index f4de619..9a730e7 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1225,7 +1225,8 @@  Object *object_resolve_path_component(Object *parent, cons
     }

     if (object_property_is_link(prop)) {
-        return *(Object **)prop->opaque;
+        LinkProperty *lprop = prop->opaque;
+        return *lprop->child;
     } else if (object_property_is_child(prop)) {
         return prop->opaque;
     } else {