qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 1/2] iotests: 030 TestParallelOps non-shared bas


From: Alberto Garcia
Subject: Re: [Qemu-devel] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node
Date: Sun, 24 Mar 2019 19:05:09 +0100
User-agent: Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu)

On Fri 22 Mar 2019 04:54:59 PM CET, Alberto Garcia <address@hidden> wrote:
>    E <- D <- C <- B <- A
>
> 2) commit from C to E, then stream from C to A
>
>    This fails because the commit job inserts a filter between C and B
>    and the bdrv_freeze_backing_chain(bs, base) call in stream_start()
>    fails.
>
>    However! I found this crash in a couple of occasions, I believe that
>    it happens if the commit job finishes before block_stream, but I need
>    to debug it further to see why the previous error didn't happen.

I was debugging this today. Here's what happens:

 - The commit job starts
 - The stream job starts and yields during bdrv_reopen_set_read_only()
   in stream_start()
 - The commit job ends and removes C and D from the backing chain.
 - stream_start() resumes but now 'C' doesn't exist anymore, so
   BlockDriverState *base is a dead pointer.

Berto



reply via email to

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