assertion "QLIST_EMPTY(&bs->tracked_requests)" failed
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
QEMU 1.3.0 on OpenBSD now crashes with an error as shown below and the command line params do not seem to matter.
assertion "QLIST_
#1 0x0000030d1bce24aa in abort () at /usr/src/
p = (struct atexit *) 0x30d11897000
mask = 4294967263
#2 0x0000030d1bc5ff44 in __assert2 (file=Variable "file" is not available.
) at /usr/src/
No locals.
#3 0x0000030b0d383a03 in bdrv_drain_all () at block.c:1220
bs = (BlockDriverState *) 0x30d13f3b630
busy = false
__func__ = "bdrv_drain_all"
#4 0x0000030b0d43acfc in bmdma_cmd_writeb (bm=0x30d0f5f56a8, val=8) at hw/ide/pci.c:312
__func__ = "bmdma_cmd_writeb"
#5 0x0000030b0d43b450 in bmdma_write (opaque=
bm = (BMDMAState *) 0x30d0f5f56a8
#6 0x0000030b0d5c2ce6 in memory_
at /home/ports/
mr = (MemoryRegion *) 0x30d0f5f57d0
tmp = 8
#7 0x0000030b0d5c2dc5 in access_
access=
access_mask = 255
access_size = 1
i = 0
#8 0x0000030b0d5c3222 in memory_
at /home/ports/
mrio = (MemoryRegionIO
mr = (MemoryRegion *) 0x30d0f5f57d0
__func__ = "memory_
#9 0x0000030b0d5c019a in ioport_writeb_thunk (opaque=
ioport = (IORange *) 0x30d1d5e7400
#10 0x0000030b0d5bfb65 in ioport_write (index=0, address=49216, data=8) at /home/ports/
func = (IOPortWriteFunc *) 0x30b0d5c0148 <ioport_
#11 0x0000030b0d5c0704 in cpu_outb (addr=49216, val=8 '\b') at /home/ports/
No locals.
#12 0x0000030b0d6067dd in helper_outb (port=49216, data=8) at /home/ports/
No locals.
On Thu, Dec 06, 2012 at 04:02:57AM -0000, Brad Smith wrote:
> QEMU 1.3.0 on OpenBSD now crashes with an error as shown below and the
> command line params do not seem to matter.
Please use git-bisect(1) to identify the commit that caused the
regression.
I was unable to hit this code path with qemu-system-i386 with an IDE
disk. Please do share your command-line.
> assertion "QLIST_ EMPTY(& bs->tracked_ requests) " failed: file "block.c",
> line 1220, function "bdrv_drain_all"
bdrv_drain_all() waits until in-flight requests have completed. The
assertion verifies that all I/O requests are really done. Something is
wrong here.
> #1 0x0000030d1bce24aa in abort () at /usr/src/ lib/libc/ stdlib/ abort.c: 70 lib/libc/ gen/assert. c:52 0x30d0f5f56a8, addr=0, val=8, size=1) at hw/ide/piix.c:76
> p = (struct atexit *) 0x30d11897000
> mask = 4294967263
> cleanup_called = 1
> #2 0x0000030d1bc5ff44 in __assert2 (file=Variable "file" is not available.
> ) at /usr/src/
> No locals.
> #3 0x0000030b0d383a03 in bdrv_drain_all () at block.c:1220
> bs = (BlockDriverState *) 0x30d13f3b630
> busy = false
> __func__ = "bdrv_drain_all"
> #4 0x0000030b0d43acfc in bmdma_cmd_writeb (bm=0x30d0f5f56a8, val=8) at hw/ide/pci.c:312
> __func__ = "bmdma_cmd_writeb"
> #5 0x0000030b0d43b450 in bmdma_write (opaque=
> bm = (BMDMAState *) 0x30d0f5f56a8
The device is an IDE disk.
> #6 0x0000030b0d5c2ce6 in memory_ region_ write_accessor (opaque= 0x30d0f5f57d0, addr=0, value=0x30d18c2 88f0, size=1, shift=0, mask=255) pobj/qemu- 1.3.0-debug/ qemu-1. 3.0/memory. c:334 with_adjusted_ size (addr=0, value=0x30d18c2 88f0, size=1, access_size_min=1, access_size_max=4, 0x30b0d5c2c6b <memory_ region_ write_accessor> , opaque= 0x30d0f5f57d0) at /home/ports/ pobj/qemu- 1.3.0-debug/ qemu-1. 3.0/memory. c:364 region_ iorange_ write (iorange= 0x30d1d5e7400, offset=0, width=1, data=8) pobj/qemu- 1.3.0-debug/ qemu-1. 3.0/memory. c:439 Range *) 0x30d1d5e7400 region_ iorange_ write" 0x30d1d5e7400, addr=49216, data=8) at /home/ports/ pobj/qemu- 1.3.0-debug/ qemu-1. 3.0/ioport. c:212 pobj/qemu- 1.3.0-debug/ qemu-1. 3.0/ioport. c:83 writeb_ thunk> ioport_ writeb> , 0x30b0d5bfc61 <default_ ioport_ writew> , 0x30b0d5bfd0c <default_ ioport_ writel> } pobj/qemu- 1.3.0-debug/ qemu-1. 3.0/ioport. c:289 pobj/qemu- 1.3.0-debug/ qemu-1. 3.0/target- i386/misc_ helper. c:72
> at /home/ports/
> mr = (MemoryRegion *) 0x30d0f5f57d0
> tmp = 8
> #7 0x0000030b0d5c2dc5 in access_
> access=
> access_mask = 255
> access_size = 1
> i = 0
> #8 0x0000030b0d5c3222 in memory_
> at /home/ports/
> mrio = (MemoryRegionIO
> mr = (MemoryRegion *) 0x30d0f5f57d0
> __func__ = "memory_
> #9 0x0000030b0d5c019a in ioport_writeb_thunk (opaque=
> ioport = (IORange *) 0x30d1d5e7400
> #10 0x0000030b0d5bfb65 in ioport_write (index=0, address=49216, data=8) at /home/ports/
> func = (IOPortWriteFunc *) 0x30b0d5c0148 <ioport_
> default_func = {0x30b0d5bfbbc <default_
> #11 0x0000030b0d5c0704 in cpu_outb (addr=49216, val=8 '\b') at /home/ports/
> No locals.
> #12 0x0000030b0d6067dd in helper_outb (port=49216, data=8) at /home/ports/
> No locals.