Bug 1200295
| Summary: | QEMU segfault when doing unaligned zero write to non-512 disk | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Gu Nini <ngu> | ||||
| Component: | qemu-kvm | Assignee: | Fam Zheng <famz> | ||||
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 7.2 | CC: | hhuang, huding, juzhang, mazhang, michen, qzhang, rbalakri, virt-maint, xfu, xuhan, ypu, zhengtli | ||||
| Target Milestone: | rc | ||||||
| Target Release: | --- | ||||||
| Hardware: | All | ||||||
| OS: | All | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | qemu-kvm-1.5.3-89.el7 | Doc Type: | Bug Fix | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | |||||||
| : | 1207034 (view as bug list) | Environment: | |||||
| Last Closed: | 2015-11-19 04:58:56 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Bug Depends On: | |||||||
| Bug Blocks: | 1207034 | ||||||
| Attachments: |
|
||||||
|
Description
Gu Nini
2015-03-10 08:56:18 UTC
Created attachment 999782 [details]
gdb_info_of_core_file
Patches posted to upstream: http://lists.gnu.org/archive/html/qemu-devel/2015-03/msg04617.html Fixing the component to qemu-kvm. qemu-kvm-rhev will pick up the patches automatically from upstream in the coming rebase to 2.3, so we only need to fix qemu-kvm here. Cloning to qemu-kvm-rhev and set to MODIFIED, in order to keep track for QE purpose. Fix included in qemu-kvm-1.5.3-89.el7 Reproduce this bug with qemu-kvm-1.5.3-88.el7.x86_64.
Result:
# qemu-img create -f raw test.raw 100M
# (echo "open -o file.align=4k blkdebug::test.raw"; echo "write -z 512 1024") | qemu-io
qemu-io> qemu-io> Segmentation fault (core dumped)
Program received signal SIGSEGV, Segmentation fault.
0x0000555555568135 in bdrv_co_do_pwritev (bs=0x555555c12320, offset=512, bytes=1024, qiov=0x0, flags=BDRV_REQ_ZERO_WRITE) at block.c:3133
3133 qemu_iovec_init(&local_qiov, qiov->niov + 2);
Missing separate debuginfos, use: debuginfo-install glib2-2.40.0-4.el7.x86_64 glibc-2.17-78.el7.x86_64 glusterfs-api-3.6.0.29-2.el7.x86_64 glusterfs-libs-3.6.0.29-2.el7.x86_64 libaio-0.3.109-13.el7.x86_64 libgcc-4.8.3-9.el7.x86_64 libgcrypt-1.5.3-12.el7.x86_64 libgpg-error-1.12-3.el7.x86_64 libiscsi-1.9.0-6.el7.x86_64 libstdc++-4.8.3-9.el7.x86_64 libuuid-2.23.2-22.el7_1.x86_64 nspr-4.10.8-1.el7_1.x86_64 nss-3.19.1-3.el7_1.x86_64 nss-util-3.19.1-3.el7.x86_64 openssl-libs-1.0.1e-42.el7.x86_64 zlib-1.2.7-15.el7.x86_64
(gdb) bt
#0 0x0000555555568135 in bdrv_co_do_pwritev (bs=0x555555c12320, offset=512, bytes=1024, qiov=0x0, flags=BDRV_REQ_ZERO_WRITE) at block.c:3133
#1 0x0000555555563bef in bdrv_co_do_write_zeroes (bs=bs@entry=0x555555c0e0d0, sector_num=sector_num@entry=1, nb_sectors=nb_sectors@entry=2, flags=flags@entry=BDRV_REQ_ZERO_WRITE)
at block.c:2992
#2 0x0000555555568045 in bdrv_aligned_pwritev (flags=2, qiov=0x0, bytes=1024, offset=<optimized out>, req=0x7ffff7fd1f10, bs=0x555555c0e0d0) at block.c:3047
#3 bdrv_co_do_pwritev (bs=0x555555c0e0d0, offset=<optimized out>, bytes=1024, qiov=qiov@entry=0x0, flags=BDRV_REQ_ZERO_WRITE) at block.c:3179
#4 0x000055555556891a in bdrv_co_do_writev (flags=<optimized out>, qiov=0x0, nb_sectors=<optimized out>, sector_num=<optimized out>, bs=<optimized out>) at block.c:3203
#5 bdrv_co_write_zeroes (bs=<optimized out>, sector_num=<optimized out>, nb_sectors=<optimized out>, flags=<optimized out>, flags@entry=(unknown: 0)) at block.c:3225
#6 0x00005555555b7c81 in co_write_zeroes_entry (opaque=0x7fffffffe120) at qemu-io.c:239
#7 0x000055555559cb2a in coroutine_trampoline (i0=<optimized out>, i1=<optimized out>) at coroutine-ucontext.c:118
#8 0x00007ffff50290f0 in ?? () from /lib64/libc.so.6
#9 0x00007fffffffb890 in ?? ()
#10 0x0000000000000000 in ?? ()
Verify this bug on qemu-kvm-1.5.3-97.el7
Result:
# (echo "open -o file.align=4k blkdebug::test.raw"; echo "write -z 512 1024") | qemu-io
qemu-io> qemu-io> wrote 1024/1024 bytes at offset 512
1 KiB, 1 ops; 0.0928 sec (10.769 KiB/sec and 10.7694 ops/sec)
qemu-io>
This bug has been fixed.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2213.html |