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

qemu crash on Assertion `block->n_free_ciphers > 0' failed in guest installation with luks and iothread-vq-mapping [rhel-9.5]

    • qemu-kvm-9.0.0-5.el9
    • None
    • Important
    • CustomerScenariosInitiative
    • sst_virtualization_storage
    • ssg_virtualization
    • 17
    • None
    • QE ack
    • False
    • Hide

      None

      Show
      None
    • None
    • Red Hat Enterprise Linux
    • None
    • x86_64
    • All
    • None

      What were you trying to do that didn't work?
      Install guest on the luks image format and enable iothread-vq-mapping with 2 iothreads on disks.
      it hits a crash issue

      #0 0x00007ff2daa8b94c __pthread_kill_implementation (libc.so.6 + 0x8b94c)
      #1 0x00007ff2daa3e646 raise (libc.so.6 + 0x3e646)
      #2 0x00007ff2daa287f3 abort (libc.so.6 + 0x287f3)
      #3 0x00007ff2daa2871b __assert_fail_base.cold (libc.so.6 + 0x2871b)
      #4 0x00007ff2daa37386 __assert_fail (libc.so.6 + 0x37386)
      #5 0x000055d73fda4256 qcrypto_block_decrypt_helper (qemu-kvm + 0x80c256)
      #6 0x000055d73fe14f1e block_crypto_co_preadv (qemu-kvm + 0x87cf1e)
      #7 0x000055d73fe22b14 bdrv_driver_preadv (qemu-kvm + 0x88ab14)
      #8 0x000055d73fe1c5c6 bdrv_aligned_preadv (qemu-kvm + 0x8845c6)
      #9 0x000055d73fe1bb71 bdrv_co_preadv_part (qemu-kvm + 0x883b71)
      #10 0x000055d73fe05a4f blk_co_do_preadv_part.llvm.3387001719044486676 (qemu-kvm + 0x86da4>
      #11 0x000055d73fe06e3e blk_aio_read_entry.llvm.3387001719044486676 (qemu-kvm + 0x86ee3e)
      #12 0x000055d74000fed6 coroutine_trampoline.llvm.7411265155963619232 (qemu-kvm + 0xa77ed6)
      #13 0x00007ff2daa53830 n/a (libc.so.6 + 0x53830)

      Please provide the package NVR for which bug is seen:
      Red Hat Enterprise Linux release 9.5 Beta (Plow)
      5.14.0-440.el9.x86_64
      qemu-kvm-9.0.0-2.el9.x86_64
      seabios-bin-1.16.3-2.el9.noarch
      edk2-ovmf-20240214-2.el9.noarch

      How reproducible:
      100%

      Steps to reproduce
      1. Create image file
      /usr/bin/qemu-img create --object secret,id=image1_encrypt0,data=redhat -f luks -o key-secret=image1_encrypt0 /home/kvm_autotest_root/images/rhel950-64-virtio.luks 20G 
      
      2.Boot VM, enable two iothreads on disk.
      
       /usr/libexec/qemu-kvm \
           -name 'avocado-vt-vm1'  \
           -sandbox on,elevateprivileges=deny,obsolete=deny,resourcecontrol=deny,spawn=deny \
           -machine q35,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 7168 \
           -object '{"size": 7516192768, "id": "mem-machine_mem", "qom-type": "memory-backend-ram"}'  \
           -smp 8,maxcpus=8,cores=4,threads=1,dies=1,sockets=2  \
           -cpu 'Skylake-Server',+kvm_pv_unhalt \
      \
           -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"}' \
           -object '{"qom-type": "iothread", "id": "iothread0"}' \
           -object '{"qom-type": "iothread", "id": "iothread1"}' \
           -object '{"qom-type": "secret", "id": "image1_encrypt0", "data": "redhat"}' \
           -blockdev '{"node-name": "file_image1", "driver": "file", "auto-read-only": true, "discard": "unmap", "aio": "threads", "filename": "/home/kvm_autotest_root/images/rhel950-64-virtio.luks", "cache": {"direct": true, "no-flush": false}}' \
           -blockdev '{"node-name": "drive_image1", "driver": "luks", "read-only": false, "key-secret": "image1_encrypt0", "cache": {"direct": true, "no-flush": false}, "file": "file_image1"}' \
           -device '{"id": "pcie-root-port-2", "port": 2, "driver": "pcie-root-port", "addr": "0x1.0x2", "bus": "pcie.0", "chassis": 3}' \
           -device '{"driver": "virtio-blk-pci", "id": "image1", "drive": "drive_image1", "bootindex": 1, "write-cache": "on", "iothread-vq-mapping": [{"iothread": "iothread0"}, {"iothread": "iothread1"}], "bus": "pcie-root-port-2", "addr": "0x0"}' \
           -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:74:e5:6b:7b:e2", "id": "idwEe6Et", "netdev": "idki94xH", "bus": "pcie-root-port-3", "addr": "0x0"}' \
           -netdev  '{"id": "idki94xH", "type": "tap", "vhost": true, "vhostfd": "16", "fd": "12"}' \
           -blockdev '{"node-name": "file_cd1", "driver": "file", "auto-read-only": true, "discard": "unmap", "aio": "threads", "filename": "/home/kvm_autotest_root/iso/linux/RHEL-9.5.0-20240512.8-x86_64-dvd1.iso", "cache": {"direct": true, "no-flush": false}}' \
           -blockdev '{"node-name": "drive_cd1", "driver": "raw", "read-only": true, "cache": {"direct": true, "no-flush": false}, "file": "file_cd1"}' \
           -device '{"driver": "ide-cd", "id": "cd1", "drive": "drive_cd1", "bootindex": 2, "write-cache": "on", "bus": "ide.0", "unit": 0}' \
           -blockdev '{"node-name": "file_unattended", "driver": "file", "auto-read-only": true, "discard": "unmap", "aio": "threads", "filename": "/home/kvm_autotest_root/images/rhel950-64/ks.iso", "cache": {"direct": true, "no-flush": false}}' \
           -blockdev '{"node-name": "drive_unattended", "driver": "raw", "read-only": true, "cache": {"direct": true, "no-flush": false}, "file": "file_unattended"}' \
           -device '{"driver": "ide-cd", "id": "unattended", "drive": "drive_unattended", "bootindex": 3, "write-cache": "on", "bus": "ide.1", "unit": 0}'  \
           -kernel '/home/kvm_autotest_root/images/rhel950-64/vmlinuz'  \
           -append 'inst.sshd inst.repo=cdrom inst.ks=cdrom:/ks.cfg net.ifnames=0 console=ttyS0,115200'  \
           -initrd '/home/kvm_autotest_root/images/rhel950-64/initrd.img'  \
           -vnc :1  \
           -rtc base=utc,clock=host,driftfix=slew  \
           -boot menu=off,order=cdn,once=d,strict=off  \
           -no-shutdown \
           -enable-kvm \
           -device '{"id": "pcie_extra_root_port_0", "driver": "pcie-root-port", "multifunction": true, "bus": "pcie.0", "addr": "0x3", "chassis": 5}'
      
      3.
      

      Expected results
      install succeed

      Actual results
      Crash

       

      coredump file:http://fileshare.hosts.qa.psi.pek2.redhat.com/pub/logs/qdata/qbugs/j36159/2024-05-13/coredump.zst

      PS:
      1.It may pass if using qcow2
      2.It may pass if using traditional iothread schema : "iothread": "iothread0"

      3.It may pass if using one iothrhead with iothread-vq-mapping

      "iothread-vq-mapping": [

      {"iothread": "iothread0"}

      ]

      4.Same issue also exist on

      qemu-kvm-8.2.0-11.el9_4.x86_64

            shajnocz@redhat.com Stefan Hajnoczi
            qingwangrh qing wang
            virt-maint virt-maint
            qing wang qing wang
            Votes:
            0 Vote for this issue
            Watchers:
            16 Start watching this issue

              Created:
              Updated: