qemu-io fails with Assertion `*host_offset != 0' failed

Bug #1728643 reported by R.Nageswara Sastry
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

git is at HEAD a93ece47fd9edbd4558db24300056c9a57d3bcd4
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_cluster_offset (bs=0x391e9ad0, offset=884736, bytes=0x3fffaa89fb4c, host_offset=0x3fffaa89fb58, m=0x3fffaa89fb60)
    at block/qcow2-cluster.c:1524
#5 0x000000001004d3f4 in qcow2_co_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=0) at block/qcow2.c:1919
#6 0x00000000100a9648 in bdrv_driver_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=16) at block/io.c:898
#7 0x00000000100ab630 in bdrv_aligned_pwritev (child=0x391f51a0, req=0x3fffaa89fdd8, offset=884736, bytes=34816, align=1, qiov=0x3fffce0e2940, flags=16)
    at block/io.c:1440
#8 0x00000000100ac4ac in bdrv_co_pwritev (child=0x391f51a0, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=BDRV_REQ_FUA) at block/io.c:1691
#9 0x000000001008da0c in blk_co_pwritev (blk=0x391d9410, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=BDRV_REQ_FUA) at block/block-backend.c:1085
#10 0x000000001008db68 in blk_write_entry (opaque=0x3fffce0e2958) at block/block-backend.c:1110
#11 0x00000000101aa444 in coroutine_trampoline (i0=958427472, i1=0) at util/coroutine-ucontext.c:79
#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_cluster_offset (bs=0x391e9ad0, offset=884736, bytes=0x3fffaa89fb4c, host_offset=0x3fffaa89fb58, m=0x3fffaa89fb60)
    at block/qcow2-cluster.c:1524
        s = 0x391f5d80
        start = 919552
        remaining = 0
        cluster_offset = 399360
        cur_bytes = 34816
        ret = 1
        __PRETTY_FUNCTION__ = "qcow2_alloc_cluster_offset"
#5 0x000000001004d3f4 in qcow2_co_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=0) at block/qcow2.c:1919
        s = 0x391f5d80
        offset_in_cluster = 360448
        ret = 0
        cur_bytes = 34816
        cluster_offset = 0
        hd_qiov = {iov = 0x391b85a0, niov = 0, nalloc = 1, size = 0}
        bytes_done = 0
        cluster_data = 0x0
        l2meta = 0x392074c0
        __PRETTY_FUNCTION__ = "qcow2_co_pwritev"
#6 0x00000000100a9648 in bdrv_driver_pwritev (bs=0x391e9ad0, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=16) at block/io.c:898
        drv = 0x102036f0 <bdrv_qcow2>
        sector_num = 958319760
        nb_sectors = 2340082071
        ret = 743104256
        __PRETTY_FUNCTION__ = "bdrv_driver_pwritev"
#7 0x00000000100ab630 in bdrv_aligned_pwritev (child=0x391f51a0, req=0x3fffaa89fdd8, offset=884736, bytes=34816, align=1, qiov=0x3fffce0e2940, flags=16)
    at block/io.c:1440
        bs = 0x391e9ad0
        drv = 0x102036f0 <bdrv_qcow2>
        waited = false
        ret = 0
        end_sector = 1796
        bytes_remaining = 34816
        max_transfer = 2147483647
        __PRETTY_FUNCTION__ = "bdrv_aligned_pwritev"
#8 0x00000000100ac4ac in bdrv_co_pwritev (child=0x391f51a0, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=BDRV_REQ_FUA) at block/io.c:1691
        bs = 0x391e9ad0
        req = {bs = 0x391e9ad0, offset = 884736, bytes = 34816, type = BDRV_TRACKED_WRITE, serialising = false, overlap_offset = 884736,
          overlap_bytes = 34816, list = {le_next = 0x0, le_prev = 0x391ecd48}, co = 0x39207150, wait_queue = {entries = {sqh_first = 0x0,
              sqh_last = 0x3fffaa89fe20}}, waiting_for = 0x0}
        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}
        use_local_qiov = false
        ret = 0
        __PRETTY_FUNCTION__ = "bdrv_co_pwritev"
#9 0x000000001008da0c in blk_co_pwritev (blk=0x391d9410, offset=884736, bytes=34816, qiov=0x3fffce0e2940, flags=BDRV_REQ_FUA) at block/block-backend.c:1085
        ret = 0
        bs = 0x391e9ad0
#10 0x000000001008db68 in blk_write_entry (opaque=0x3fffce0e2958) at block/block-backend.c:1110
        rwco = 0x3fffce0e2958
#11 0x00000000101aa444 in coroutine_trampoline (i0=958427472, i1=0) at util/coroutine-ucontext.c:79
        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.

Revision history for this message
R.Nageswara Sastry (nasastry) wrote :
Revision history for this message
Max Reitz (xanclic) wrote :

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

Revision history for this message
Thomas Huth (th-huth) wrote :
Changed in qemu:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.