qemu-io fails with Assertion `*host_offset != 0' failed
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
git is at HEAD a93ece47fd9edbd
This is on ppc64le architecture.
Re-production steps:
1. Copy the attached files named test.img to a directory
2. And customize the following command to point to the above directory and run the same.
# cp test.img copy.img
# qemu-io <path to>/copy.img -c "write 884736 34816"
from gdb:
(gdb) bt
#0 0x00003fffad63eff0 in raise () from /lib64/libc.so.6
#1 0x00003fffad64136c in abort () from /lib64/libc.so.6
#2 0x00003fffad634c44 in __assert_fail_base () from /lib64/libc.so.6
#3 0x00003fffad634d34 in __assert_fail () from /lib64/libc.so.6
#4 0x000000001006426c in qcow2_alloc_
at block/qcow2-
#5 0x000000001004d3f4 in qcow2_co_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e
#6 0x00000000100a9648 in bdrv_driver_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e
#7 0x00000000100ab630 in bdrv_aligned_
at block/io.c:1440
#8 0x00000000100ac4ac in bdrv_co_pwritev (child=0x391f51a0, offset=884736, bytes=34816, qiov=0x3fffce0e
#9 0x000000001008da0c in blk_co_pwritev (blk=0x391d9410, offset=884736, bytes=34816, qiov=0x3fffce0e
#10 0x000000001008db68 in blk_write_entry (opaque=
#11 0x00000000101aa444 in coroutine_
#12 0x00003fffad652b9c in makecontext () from /lib64/libc.so.6
#13 0x0000000000000000 in ?? ()
(gdb) bt full
#0 0x00003fffad63eff0 in raise () from /lib64/libc.so.6
No symbol table info available.
#1 0x00003fffad64136c in abort () from /lib64/libc.so.6
No symbol table info available.
#2 0x00003fffad634c44 in __assert_fail_base () from /lib64/libc.so.6
No symbol table info available.
#3 0x00003fffad634d34 in __assert_fail () from /lib64/libc.so.6
No symbol table info available.
#4 0x000000001006426c in qcow2_alloc_
at block/qcow2-
s = 0x391f5d80
start = 919552
remaining = 0
cur_bytes = 34816
ret = 1
#5 0x000000001004d3f4 in qcow2_co_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e
s = 0x391f5d80
ret = 0
cur_bytes = 34816
hd_qiov = {iov = 0x391b85a0, niov = 0, nalloc = 1, size = 0}
bytes_done = 0
l2meta = 0x392074c0
#6 0x00000000100a9648 in bdrv_driver_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e
drv = 0x102036f0 <bdrv_qcow2>
sector_num = 958319760
nb_sectors = 2340082071
ret = 743104256
#7 0x00000000100ab630 in bdrv_aligned_
at block/io.c:1440
bs = 0x391e9ad0
drv = 0x102036f0 <bdrv_qcow2>
waited = false
ret = 0
end_sector = 1796
#8 0x00000000100ac4ac in bdrv_co_pwritev (child=0x391f51a0, offset=884736, bytes=34816, qiov=0x3fffce0e
bs = 0x391e9ad0
req = {bs = 0x391e9ad0, offset = 884736, bytes = 34816, type = BDRV_TRACKED_WRITE, serialising = false, overlap_offset = 884736,
align = 1
---Type <return> to continue, or q <return> to quit---
head_buf = 0x0
tail_buf = 0x0
local_qiov = {iov = 0x3fffaa89fdb0, niov = -1433797136, nalloc = 16383, size = 884736}
ret = 0
#9 0x000000001008da0c in blk_co_pwritev (blk=0x391d9410, offset=884736, bytes=34816, qiov=0x3fffce0e
ret = 0
bs = 0x391e9ad0
#10 0x000000001008db68 in blk_write_entry (opaque=
rwco = 0x3fffce0e2958
#11 0x00000000101aa444 in coroutine_
arg = {p = 0x39207150, i = {958427472, 0}}
self = 0x39207150
co = 0x39207150
#12 0x00003fffad652b9c in makecontext () from /lib64/libc.so.6
No symbol table info available.
#13 0x0000000000000000 in ?? ()
No symbol table info available.
Will be attaching image_fuzzer images.
Hi,
Once more, thanks a lot for reporting this bug! I've found a fix and I'll send a patch once I've written a test case.
Max