virtio_scsi_ctx_check failed when detach virtio_scsi disk
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Expired
|
Undecided
|
Unassigned |
Bug Description
I found a problem that virtio_
(gdb) bt
#0 0x0000ffffb02e1bd0 in raise () from /lib64/libc.so.6
#1 0x0000ffffb02e2f7c in abort () from /lib64/libc.so.6
#2 0x0000ffffb02db124 in __assert_fail_base () from /lib64/libc.so.6
#3 0x0000ffffb02db1a4 in __assert_fail () from /lib64/libc.so.6
#4 0x00000000004eb9a8 in virtio_
at /Images/
#5 0x00000000004ec87c in virtio_
at /Images/
#6 0x00000000004ecc20 in virtio_
at /Images/
#7 0x00000000004eda20 in virtio_
at /Images/
#8 0x0000000000877254 in aio_dispatch (ctx=0xac61010) at util/aio-
#9 0x00000000008773ec in aio_poll (ctx=0xac61010, blocking=true) at util/aio-
#10 0x00000000005cd7cc in iothread_run (opaque=0xac5e4b0) at iothread.c:49
#11 0x000000000087a8b8 in qemu_thread_start (args=0xac61360) at util/qemu-
#12 0x00000000008a04e8 in thread_
#13 0x0000ffffb041c8bc in start_thread () from /lib64/
#14 0x0000ffffb0382f8c in thread_start () from /lib64/libc.so.6
assert(
I think this patch (https:/
commit a6f230c8d13a7ff
SCSIDevice to the main AioContex, but s->ctx is still the iothread AioContext. Is this a bug?
On Wed, Jul 17, 2019 at 08:20:35AM -0000, 贞贵李 wrote: scsi_ctx_ check failed when detaching scsi_ctx_ check (d=d@entry= 0xc70d790, s=<optimized out>, s=<optimized out>) lzg/code/ 710/qemu- 2.8.1/hw/ scsi/virtio- scsi.c: 243 scsi_handle_ cmd_req_ prepare (s=s@entry= 0xd27a7a0, req=req@ entry=0xafc4b90 ) lzg/code/ 710/qemu- 2.8.1/hw/ scsi/virtio- scsi.c: 553 scsi_handle_ cmd_vq (s=0xd27a7a0, vq=0xd283410) lzg/code/ 710/qemu- 2.8.1/hw/ scsi/virtio- scsi.c: 588 scsi_data_ plane_handle_ cmd (vdev=0x0, vq=0xffffae7a6f98) lzg/code/ 710/qemu- 2.8.1/hw/ scsi/virtio- scsi-dataplane. c:57 posix.c: 323 posix.c: 472 thread- posix.c: 495 entry_for_ hotfix (pthread_cb=0x0) at uvp/hotpatch/ qemu_hotpatch_ helper. c:579 libpthread. so.0 blk_get_ aio_context( d->conf. blk) == s->ctx) failed. /git.qemu. org/?p= qemu.git; a=commitdiff; h=a6f230c8d13a7 ff3a0c7f1097412 f44bfd9eff0b) 3a0c7f1097412f4 4bfd9eff0b move blockbackend back
> Public bug reported:
>
> I found a problem that virtio_
> virtio_scsi disk. The bt is below:
>
> (gdb) bt
> #0 0x0000ffffb02e1bd0 in raise () from /lib64/libc.so.6
> #1 0x0000ffffb02e2f7c in abort () from /lib64/libc.so.6
> #2 0x0000ffffb02db124 in __assert_fail_base () from /lib64/libc.so.6
> #3 0x0000ffffb02db1a4 in __assert_fail () from /lib64/libc.so.6
> #4 0x00000000004eb9a8 in virtio_
> at /Images/
> #5 0x00000000004ec87c in virtio_
> at /Images/
> #6 0x00000000004ecc20 in virtio_
> at /Images/
> #7 0x00000000004eda20 in virtio_
> at /Images/
> #8 0x0000000000877254 in aio_dispatch (ctx=0xac61010) at util/aio-
> #9 0x00000000008773ec in aio_poll (ctx=0xac61010, blocking=true) at util/aio-
> #10 0x00000000005cd7cc in iothread_run (opaque=0xac5e4b0) at iothread.c:49
> #11 0x000000000087a8b8 in qemu_thread_start (args=0xac61360) at util/qemu-
> #12 0x00000000008a04e8 in thread_
> #13 0x0000ffffb041c8bc in start_thread () from /lib64/
> #14 0x0000ffffb0382f8c in thread_start () from /lib64/libc.so.6
>
> assert(
>
> I think this patch
> (https:/
> introduce this problem.
>
> commit a6f230c8d13a7ff
> to main AioContext on unplug. It set the AioContext of
>
> SCSIDevice to the main AioContex, but s->ctx is still the iothread
> AioContext. Is this a bug?
The backtrace shows that virtqueue processing is happening in the
IOThread. This is expected so now the question is why the
BlockBackend's AioContext is the main AioContext.
Can you share steps for reproducing this bug?
Thanks!
> ** Affects: qemu /bugs.launchpad .net/bugs/ 1836855 scsi_ctx_ check failed when detach virtio_scsi disk scsi_ctx_ check failed when detaching
> Importance: Undecided
> Status: New
>
> --
> You received this bug notification because you are a member of qemu-
> devel-ml, which is subscribed to QEMU.
> https:/
>
> Title:
> virtio_
>
> Status in QEMU:
> New
>
> Bug description:
> I found a problem that virtio_
> virtio_scsi disk. The bt is below:
>
> (gdb) bt
> #0 0x0000ffffb02e1bd0 in raise () from /lib64/libc.so.6
> #1 0x0000ffffb02e2f7c in abort () from /lib64/libc.so.6
> #2 0x0000ffffb02db124 in __assert_fail_base () from /lib64/libc.so.6
> #3 0x0000ffffb02db1a4 in __assert_fail () from /lib64/libc.so.6
> #4 0x00000000004eb9a8 in virtio_scsi_...