[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] segfault in parallel blockjobs (iotest 30)
From: |
Alberto Garcia |
Subject: |
Re: [Qemu-block] segfault in parallel blockjobs (iotest 30) |
Date: |
Wed, 08 Nov 2017 15:45:38 +0100 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu) |
On Tue 07 Nov 2017 05:19:41 PM CET, Anton Nefedov wrote:
> BlockBackend gets deleted by another job's stream_complete(), deferred
> to the main loop, so the fact that the job is put to sleep by
> bdrv_drain_all_begin() doesn't really stop it from execution.
I was debugging this a bit, and the block_job_defer_to_main_loop() call
happens _after_ all jobs have been paused, so I think that when the BDS
is drained then stream_run() finishes the last iteration without
checking if it's paused.
Without your patch (i.e. with a smaller STREAM_BUFFER_SIZE) then I
assume that the function would have to continue looping and
block_job_sleep_ns() would make the job coroutine yield, effectively
pausing the job and preventing the crash.
I can fix the crash by adding block_job_pause_point(&s->common) at the
end of stream_run() (where the 'out' label is).
I'm thinking that perhaps we should add the pause point directly to
block_job_defer_to_main_loop(), to prevent any block job from running
the exit function when it's paused.
Somehow I had the impression that we discussed this already in the past
(?) because I remember thinking about this very scenario.
Berto
- [Qemu-block] segfault in parallel blockjobs (iotest 30), Anton Nefedov, 2017/11/07
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Alberto Garcia, 2017/11/08
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30),
Alberto Garcia <=
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Alberto Garcia, 2017/11/09
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Fam Zheng, 2017/11/09
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Alberto Garcia, 2017/11/15
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Anton Nefedov, 2017/11/15
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Alberto Garcia, 2017/11/16
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Anton Nefedov, 2017/11/16
- Re: [Qemu-block] segfault in parallel blockjobs (iotest 30), Alberto Garcia, 2017/11/21