Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-1708

[QSD]Qemu coredump when creating target node in qsd

    • qemu-kvm-8.2.0-1.el9
    • Yes
    • Important
    • Regression
    • rhel-sst-virtualization-storage
    • ssg_virtualization
    • 3
    • QE ack
    • False
    • Hide

      None

      Show
      None
    • None
    • Red Hat Enterprise Linux
    • None
    • None

      What were you trying to do that didn't work?

      [QSD]Qemu coredump when create target node during live snapshot

      Please provide the package NVR for which bug is seen:

      kernel version:5.14.0-351.el9.x86_64

      qemu-kvm version:qemu-kvm-8.1.0-0.el9.preview

      How reproducible:

      100%

      Steps to reproduce

       1.  Create a data disk        

      #qemu-img create -f qcow2 /home/kvm_autotest_root/images/stg1.qcow2 2G 

       2. Start a qsd demon:

      /usr/bin/qemu-storage-daemon \
        --chardev socket,server=on,wait=off,path=/root/avocado/data/avocado-vt/qsd/qsd1/qsd1_monitor.sock,id=qsd_monitor_qsd1 \
        --monitor chardev=qsd_monitor_qsd1,mode=control  \
        --blockdev '{"driver": "file", "node-name": "prot_stg1", "filename": "/home/kvm_autotest_root/images/stg1.qcow2", "auto-read-only": true, "discard": "unmap"}' \
        --blockdev '{"driver": "qcow2", "node-name": "drive_stg1", "file": "prot_stg1", "read-only": false, "detect-zeroes": "unmap", "discard": "unmap"}' \
        --export '{"type": "vhost-user-blk", "id": "id_stg1", "node-name": "drive_stg1", "writable": true, "addr": {"type": "unix", "path": "/root/avocado/data/avocado-vt/qsd/qsd1/qsd1_vhost_user_stg1.sock"}}' \
        --pidfile /root/avocado/data/avocado-vt/qsd/qsd1/qsd1.pid \ 

      3. Start guest with qemu cmdline:

      /usr/libexec/qemu-kvm \
           -S  \
           -name 'avocado-vt-vm1'  \
           -sandbox on \
           -blockdev '{"node-name": "file_ovmf_code", "driver": "file", "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd", "auto-read-only": true, "discard": "unmap"}' \
           -blockdev '{"node-name": "drive_ovmf_code", "driver": "raw", "read-only": true, "file": "file_ovmf_code"}' \
           -blockdev '{"node-name": "file_ovmf_vars", "driver": "file", "filename": "/root/avocado/data/avocado-vt/avocado-vt-vm1_rhel930-64-virtio-scsi-ovmf_qcow2_filesystem_VARS.raw", "auto-read-only": true, "discard": "unmap"}' \
           -blockdev '{"node-name": "drive_ovmf_vars", "driver": "raw", "read-only": false, "file": "file_ovmf_vars"}' \
           -machine q35,pflash0=drive_ovmf_code,pflash1=drive_ovmf_vars,memory-backend=mem-machine_mem \
           -device '{"id": "pcie-root-port-0", "driver": "pcie-root-port", "multifunction": true, "bus": "pcie.0", "addr": "0x1", "chassis": 1}' \
           -device '{"id": "pcie-pci-bridge-0", "driver": "pcie-pci-bridge", "addr": "0x0", "bus": "pcie-root-port-0"}'  \
           -nodefaults \
           -device '{"driver": "VGA", "bus": "pcie.0", "addr": "0x2"}' \
           -m 30720 \
           -object '{"size": 32212254720, "share": true, "id": "mem-machine_mem", "qom-type": "memory-backend-memfd"}'  \
           -smp 12,maxcpus=12,cores=6,threads=1,dies=1,sockets=2  \
           -cpu 'Skylake-Server',+kvm_pv_unhalt \
           -chardev socket,path=/var/tmp/monitor-qmpmonitor1-20231121-220354-rYwSkN2y,server=on,wait=off,id=qmp_id_qmpmonitor1  \
           -mon chardev=qmp_id_qmpmonitor1,mode=control \
           -chardev socket,path=/var/tmp/monitor-catch_monitor-20231121-220354-rYwSkN2y,server=on,wait=off,id=qmp_id_catch_monitor  \
           -mon chardev=qmp_id_catch_monitor,mode=control \
           -device '{"ioport": 1285, "driver": "pvpanic", "id": "idNxqwSv"}' \
           -chardev socket,path=/var/tmp/serial-serial0-20231121-220354-rYwSkN2y,server=on,wait=off,id=chardev_serial0 \
           -device '{"id": "serial0", "driver": "isa-serial", "chardev": "chardev_serial0"}'  \
           -chardev socket,id=seabioslog_id_20231121-220354-rYwSkN2y,path=/var/tmp/seabios-20231121-220354-rYwSkN2y,server=on,wait=off \
           -device isa-debugcon,chardev=seabioslog_id_20231121-220354-rYwSkN2y,iobase=0x402 \
           -device '{"id": "pcie-root-port-1", "port": 1, "driver": "pcie-root-port", "addr": "0x1.0x1", "bus": "pcie.0", "chassis": 2}' \
           -device '{"driver": "qemu-xhci", "id": "usb1", "bus": "pcie-root-port-1", "addr": "0x0"}' \
           -device '{"driver": "usb-tablet", "id": "usb-tablet1", "bus": "usb1.0", "port": "1"}' \
           -device '{"id": "pcie-root-port-2", "port": 2, "driver": "pcie-root-port", "addr": "0x1.0x2", "bus": "pcie.0", "chassis": 3}' \
           -device '{"id": "virtio_scsi_pci0", "driver": "virtio-scsi-pci", "bus": "pcie-root-port-2", "addr": "0x0"}' \
           -blockdev '{"node-name": "file_image1", "driver": "file", "auto-read-only": true, "discard": "unmap", "aio": "threads", "filename": "/home/kvm_autotest_root/images/rhel930-64-virtio-scsi-ovmf.qcow2", "cache": {"direct": true, "no-flush": false}}' \
           -blockdev '{"node-name": "drive_image1", "driver": "qcow2", "read-only": false, "cache": {"direct": true, "no-flush": false}, "file": "file_image1"}' \
           -device '{"driver": "scsi-hd", "id": "image1", "drive": "drive_image1", "write-cache": "on"}' \
           -device '{"id": "pcie-root-port-3", "port": 3, "driver": "pcie-root-port", "addr": "0x1.0x3", "bus": "pcie.0", "chassis": 4}' \
           -device '{"driver": "virtio-net-pci", "mac": "9a:80:84:43:83:8b", "id": "idsrNpF1", "netdev": "iddh80UY", "bus": "pcie-root-port-3", "addr": "0x0"}'  \
           -netdev tap,id=iddh80UY,vhost=on  \
           -vnc :0  \
           -rtc base=utc,clock=host,driftfix=slew  \
           -boot menu=off,order=cdn,once=c,strict=off \
           -device pcie-root-port,id=pcie_vubp_root_port_15,bus=pcie.0,addr=15  \
           -chardev socket,path=/root/avocado/data/avocado-vt/qsd/qsd1/qsd1_vhost_user_stg1.sock,id=char_qsd_qsd1,server=off \
           -device vhost-user-blk-pci,id=vubp_stg1,chardev=char_qsd_qsd1,num-queues=1,bus=pcie_vubp_root_port_15 \
           -enable-kvm \
           -device '{"id": "pcie_extra_root_port_0", "driver": "pcie-root-port", "multifunction": true, "bus": "pcie.0", "addr": "0x3", "chassis": 5}' \
           -monitor stdio \{code}
      4. Continue vm
      {noformat}
      {"execute": "cont", "id": "R2h1pAPl"}
      {noformat}
      5. Format data disk (guest)
      {noformat}
      #parted -s "/dev/vda"
      #mklabel msdos parted -s "/dev/vda"
      #mkpart primary 0M 2048.0M
      #yes|mkfs.ext4 -F '/dev/vda1'
      #mkdir /mnt/vda1
      #mount -t ext4 /dev/vda1 /mnt/vda1                                            
      {noformat}
      6. Create target snapshot node
      {code:java}
      {"execute": "blockdev-create", "arguments": {"options": {"driver": "file", "filename": "/root/avocado/data/avocado-vt/sn1.qcow2", "size": 2147483648}, "job-id": "file_sn1"}, "id": "5zORPZJ4"}
      {"timestamp": {"seconds": 1700642228, "microseconds": 851819}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "file_sn1"}}
      {"timestamp": {"seconds": 1700642228, "microseconds": 851952}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "file_sn1"}}
      {"return": {}, "id": "5zORPZJ4"}
      {"timestamp": {"seconds": 1700642228, "microseconds": 852617}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "file_sn1"}}
      {"timestamp": {"seconds": 1700642228, "microseconds": 852659}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "file_sn1"}}
      {"timestamp": {"seconds": 1700642228, "microseconds": 852692}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "file_sn1"}}
      {"execute": "job-dismiss", "arguments": {"id": "file_sn1"}, "id": "gHjhsfjb"}
      {"timestamp": {"seconds": 1700642240, "microseconds": 64189}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "file_sn1"}}
      {"return": {}, "id": "gHjhsfjb"}
      {"execute": "blockdev-add", "arguments": {"node-name": "file_sn1", "driver": "file", "filename": "/root/avocado/data/avocado-vt/sn1.qcow2", "aio": "threads", "auto-read-only": true, "discard": "unmap"}, "id": "y1ZZw0Ql"}
      {"return": {}, "id": "y1ZZw0Ql"}
      {"execute": "blockdev-create", "arguments": {"options": {"driver": "qcow2", "file": "file_sn1", "size": 2147483648}, "job-id": "drive_sn1"}, "id": "R5jkmQja"}
      {"timestamp": {"seconds": 1700642257, "microseconds": 187381}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "drive_sn1"}}
      {"timestamp": {"seconds": 1700642257, "microseconds": 187506}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "drive_sn1"}}
      {"return": {}, "id": "R5jkmQja"} 

      Actual Result:

      After step6, qsd coredump with info:

      aio_co_schedule: Co-routine was already scheduled in 'aio_co_schedule'
      qsd.txt: line 8: 1031537 Aborted                 (core dumped) /usr/bin/qemu-storage-daemon --chardev socket,server=on,wait=off,path=/root/avocado/data/avocado-vt/qsd/qsd1/qsd1_monitor.sock,id=qsd_monitor_qsd1 --monitor chardev=qsd_monitor_qsd1,mode=control 

        qemu output info:

         (qemu) qemu-kvm: Unexpected end-of-file before all data were read

      GDB info:

      coredumpctl debug 1031776
                 PID: 1031776 (qemu-storage-da)
                 UID: 0 (root)
                 GID: 0 (root)
              Signal: 6 (ABRT)
           Timestamp: Wed 2023-11-22 03:37:37 EST (27s ago)
        Command Line: /usr/bin/qemu-storage-daemon --chardev socket,server=on,wait=off,path=/root/avocado/data/avocado-vt/qsd/qsd1/qsd1_monitor.sock,id=qsd_monitor_qsd1 --monitor chardev=qsd_monitor_qsd1,mode=control --blockdev $'{"driver": "file", "node-name": "prot_stg1", "filename": "/home/kvm_autotest_root/images/stg1.qcow2", "auto-read-only": true, "discard": "unmap"}' --blockdev $'{"driver": "qcow2", "node-name": "drive_stg1", "file": "prot_stg1", "read-only": false, "detect-zeroes": "unmap", "discard": "unmap"}' --export $'{"type": "vhost-user-blk", "id": "id_stg1", "node-name": "drive_stg1", "writable": true, "addr": {"type": "unix", "path": "/root/avocado/data/avocado-vt/qsd/qsd1/qsd1_vhost_user_stg1.sock"}}' --pidfile /root/avocado/data/avocado-vt/qsd/qsd1/qsd1.pid
          Executable: /usr/bin/qemu-storage-daemon
       Control Group: /user.slice/user-0.slice/session-79.scope
                Unit: session-79.scope
               Slice: user-0.slice
             Session: 79
           Owner UID: 0 (root)
             Boot ID: 2785c4243ccf45128a471d61dd824774
          Machine ID: 768c6ab83c154a229d4fa3b96be4bbcb
            Hostname: dell-per740xd-01.lab.eng.pek2.redhat.com
             Storage: /var/lib/systemd/coredump/core.qemu-storage-da.0.2785c4243ccf45128a471d61dd824774.1031776.1700642257000000.zst (present)
        Size on Disk: 205.3K
             Message: Process 1031776 (qemu-storage-da) of user 0 dumped core.
                      
                      Stack trace of thread 1031776:
                      #0  0x00007f87c7aa154c __pthread_kill_implementation (libc.so.6 + 0xa154c)
                      #1  0x00007f87c7a54d06 raise (libc.so.6 + 0x54d06)
                      #2  0x00007f87c7a287f3 abort (libc.so.6 + 0x287f3)
                      #3  0x000056138f8cf3e0 aio_co_schedule (qemu-storage-daemon + 0x27c3e0)
                      #4  0x000056138f75ab0a blk_root_drained_end.llvm.8165632186031058405 (qemu-storage-daemon + 0x107b0a)
                      #5  0x000056138f767e8a bdrv_do_drained_end.llvm.1240250569700557190 (qemu-storage-daemon + 0x114e8a)
                      #6  0x000056138f76864c bdrv_drain_all_end (qemu-storage-daemon + 0x11564c)
                      #7  0x000056138f75e49e bdrv_graph_wrlock (qemu-storage-daemon + 0x10b49e)
                      #8  0x000056138f725b00 bdrv_replace_child_noperm.llvm.16484823203584798674 (qemu-storage-daemon + 0xd2b00)
                      #9  0x000056138f72522d bdrv_attach_child_common.llvm.16484823203584798674 (qemu-storage-daemon + 0xd222d)
                      #10 0x000056138f724dd2 bdrv_root_attach_child (qemu-storage-daemon + 0xd1dd2)
                      #11 0x000056138f753502 blk_insert_bs (qemu-storage-daemon + 0x100502)
                      #12 0x000056138f72757d bdrv_open_inherit.llvm.16484823203584798674 (qemu-storage-daemon + 0xd457d)
                      #13 0x000056138f7539ab blk_new_open (qemu-storage-daemon + 0x1009ab)
                      #14 0x000056138f71d40a blk_new_open_bh.llvm.13497594760898151610 (qemu-storage-daemon + 0xca40a)
                      #15 0x000056138f8ce701 aio_bh_poll (qemu-storage-daemon + 0x27b701)
                      #16 0x000056138f8b8a14 aio_dispatch (qemu-storage-daemon + 0x265a14)
                      #17 0x000056138f8cfaef aio_ctx_dispatch (qemu-storage-daemon + 0x27caef)
                      #18 0x00007f87c80bfe2f g_main_context_dispatch (libglib-2.0.so.0 + 0x54e2f)
                      #19 0x000056138f8d097a main_loop_wait (qemu-storage-daemon + 0x27d97a)
                      #20 0x000056138f7023f7 main (qemu-storage-daemon + 0xaf3f7)
                      #21 0x00007f87c7a3feb0 __libc_start_call_main (libc.so.6 + 0x3feb0)
                      #22 0x00007f87c7a3ff60 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x3ff60)
                      #23 0x000056138f700055 _start (qemu-storage-daemon + 0xad055)
                      
                      Stack trace of thread 1031827:
                      #0  0x00007f87c7a9c39a __futex_abstimed_wait_common (libc.so.6 + 0x9c39a)
                      #1  0x00007f87c7a9eea4 pthread_cond_timedwait@@GLIBC_2.3.2 (libc.so.6 + 0x9eea4)
                      #2  0x000056138f8bcc78 qemu_cond_timedwait_ts.llvm.5758719605777364021 (qemu-storage-daemon + 0x269c78)
                      #3  0x000056138f8bcc1b qemu_cond_timedwait_impl (qemu-storage-daemon + 0x269c1b)
                      #4  0x000056138f8d3af6 worker_thread (qemu-storage-daemon + 0x280af6)
                      #5  0x000056138f8bd4fa qemu_thread_start.llvm.5758719605777364021 (qemu-storage-daemon + 0x26a4fa)
                      #6  0x00007f87c7a9f802 start_thread (libc.so.6 + 0x9f802)
                      #7  0x00007f87c7a3f450 __clone3 (libc.so.6 + 0x3f450)
                      
                      Stack trace of thread 1031777:
                      #0  0x00007f87c7a3ee5d syscall (libc.so.6 + 0x3ee5d)
                      #1  0x000056138f8bd25f qemu_event_wait (qemu-storage-daemon + 0x26a25f)
                      #2  0x000056138f8c94b7 call_rcu_thread (qemu-storage-daemon + 0x2764b7)
                      #3  0x000056138f8bd4fa qemu_thread_start.llvm.5758719605777364021 (qemu-storage-daemon + 0x26a4fa)
                      #4  0x00007f87c7a9f802 start_thread (libc.so.6 + 0x9f802)
                      #5  0x00007f87c7a3f450 __clone3 (libc.so.6 + 0x3f450)
                      
                      Stack trace of thread 1031778:
                      #0  0x00007f87c7b426ff __poll (libc.so.6 + 0x1426ff)
                      #1  0x00007f87c811509c g_main_context_iterate.constprop.0 (libglib-2.0.so.0 + 0xaa09c)
                      #2  0x00007f87c80bf483 g_main_loop_run (libglib-2.0.so.0 + 0x54483)
                      #3  0x000056138f718d3f iothread_run (qemu-storage-daemon + 0xc5d3f)
                      #4  0x000056138f8bd4fa qemu_thread_start.llvm.5758719605777364021 (qemu-storage-daemon + 0x26a4fa)
                      #5  0x00007f87c7a9f802 start_thread (libc.so.6 + 0x9f802)
                      #6  0x00007f87c7a3f450 __clone3 (libc.so.6 + 0x3f450)
                      ELF object binary architecture: AMD x86-64 

      Expected results

      Create target node in qsd can success

              kwolf@redhat.com Kevin Wolf
              aliang@redhat.com Aihua Liang
              virt-maint virt-maint
              Aihua Liang Aihua Liang
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

                Created:
                Updated:
                Resolved: