Skip to content

qemu fails to build tests/unit/test-nested-aio-poll with errors about writing <N> bytes into a region of size <M> overflows the destination

Host environment

  • Operating system: Fedora 41
  • OS/kernel version: Linux cash 6.9.0-0.rc3.20240411gite8c39d0f57f3.33.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Apr 11 13:18:09 UTC 2024 x86_64 GNU/Linux
  • Architecture: x86_64
  • QEMU flavor: qemu-system-x86_64
  • QEMU version: git @ commit 37fbfda8

Description of problem

Fails to compile from source with:

[2/2] Linking target tests/unit/test-nested-aio-poll
FAILED: tests/unit/test-nested-aio-poll 
cc -m64  -o tests/unit/test-nested-aio-poll libevent-loop-base.a.p/event-loop-base.c.o libqom.a.p/qom_container.c.o libqom.a.p/qom_object.c.o libqom.a.p/qom_object_interfaces.c.o libqom.a.p/qom_qom-qobject.c.o libblock.a.p/block.c.o libblock.a.p/blockjob.c.o libblock.a.p/job.c.o libblock.a.p/qemu-io-cmds.c.o libblock.a.p/replication.c.o libblock.a.p/nbd_client.c.o libblock.a.p/nbd_client-connection.c.o libblock.a.p/nbd_common.c.o libblock.a.p/scsi_utils.c.o libblock.a.p/scsi_pr-manager.c.o libblock.a.p/scsi_pr-manager-helper.c.o libblock.a.p/block_accounting.c.o libblock.a.p/block_aio_task.c.o libblock.a.p/block_amend.c.o libblock.a.p/block_backup.c.o libblock.a.p/block_blkdebug.c.o libblock.a.p/block_blklogwrites.c.o libblock.a.p/block_blkverify.c.o libblock.a.p/block_block-backend.c.o libblock.a.p/block_block-copy.c.o libblock.a.p/block_commit.c.o libblock.a.p/block_copy-before-write.c.o libblock.a.p/block_copy-on-read.c.o libblock.a.p/block_create.c.o libblock.a.p/block_crypto.c.o libblock.a.p/block_dirty-bitmap.c.o libblock.a.p/block_filter-compress.c.o libblock.a.p/block_graph-lock.c.o libblock.a.p/block_io.c.o libblock.a.p/block_mirror.c.o libblock.a.p/block_nbd.c.o libblock.a.p/block_null.c.o libblock.a.p/block_preallocate.c.o libblock.a.p/block_progress_meter.c.o libblock.a.p/block_qapi.c.o libblock.a.p/block_qcow2.c.o libblock.a.p/block_qcow2-bitmap.c.o libblock.a.p/block_qcow2-cache.c.o libblock.a.p/block_qcow2-cluster.c.o libblock.a.p/block_qcow2-refcount.c.o libblock.a.p/block_qcow2-snapshot.c.o libblock.a.p/block_qcow2-threads.c.o libblock.a.p/block_quorum.c.o libblock.a.p/block_raw-format.c.o libblock.a.p/block_reqlist.c.o libblock.a.p/block_snapshot.c.o libblock.a.p/block_snapshot-access.c.o libblock.a.p/block_throttle.c.o libblock.a.p/block_throttle-groups.c.o libblock.a.p/block_write-threshold.c.o libblock.a.p/block_qcow.c.o libblock.a.p/block_vdi.c.o libblock.a.p/block_vhdx-endian.c.o libblock.a.p/block_vhdx-log.c.o libblock.a.p/block_vhdx.c.o libblock.a.p/block_vmdk.c.o libblock.a.p/block_vpc.c.o libblock.a.p/block_cloop.c.o libblock.a.p/block_bochs.c.o libblock.a.p/block_vvfat.c.o libblock.a.p/block_dmg.c.o libblock.a.p/block_qed-check.c.o libblock.a.p/block_qed-cluster.c.o libblock.a.p/block_qed-l2-cache.c.o libblock.a.p/block_qed-table.c.o libblock.a.p/block_qed.c.o libblock.a.p/block_parallels.c.o libblock.a.p/block_parallels-ext.c.o libblock.a.p/block_file-posix.c.o libblock.a.p/block_iscsi-opts.c.o libblock.a.p/block_nvme.c.o libblock.a.p/block_replication.c.o libblock.a.p/block_linux-aio.c.o libblock.a.p/block_io_uring.c.o libblock.a.p/block_stream.c.o libblock.a.p/block_monitor_bitmap-qmp-cmds.c.o libblock.a.p/block_blkio.c.o libblock.a.p/block_curl.c.o libblock.a.p/block_gluster.c.o libblock.a.p/block_iscsi.c.o libblock.a.p/block_nfs.c.o libblock.a.p/block_ssh.c.o libblock.a.p/block_dmg-bz2.c.o libblock.a.p/meson-generated_.._block_block-gen.c.o libcrypto.a.p/crypto_afsplit.c.o libcrypto.a.p/crypto_akcipher.c.o libcrypto.a.p/crypto_block-luks.c.o libcrypto.a.p/crypto_block-qcow.c.o libcrypto.a.p/crypto_block.c.o libcrypto.a.p/crypto_cipher.c.o libcrypto.a.p/crypto_der.c.o libcrypto.a.p/crypto_hash.c.o libcrypto.a.p/crypto_hmac.c.o libcrypto.a.p/crypto_ivgen-essiv.c.o libcrypto.a.p/crypto_ivgen-plain.c.o libcrypto.a.p/crypto_ivgen-plain64.c.o libcrypto.a.p/crypto_ivgen.c.o libcrypto.a.p/crypto_pbkdf.c.o libcrypto.a.p/crypto_secret_common.c.o libcrypto.a.p/crypto_secret.c.o libcrypto.a.p/crypto_tlscreds.c.o libcrypto.a.p/crypto_tlscredsanon.c.o libcrypto.a.p/crypto_tlscredspsk.c.o libcrypto.a.p/crypto_tlscredsx509.c.o libcrypto.a.p/crypto_tlssession.c.o libcrypto.a.p/crypto_rsakey.c.o libcrypto.a.p/crypto_hash-gnutls.c.o libcrypto.a.p/crypto_hmac-gnutls.c.o libcrypto.a.p/crypto_pbkdf-gnutls.c.o libcrypto.a.p/crypto_secret_keyring.c.o libauthz.a.p/authz_base.c.o libauthz.a.p/authz_list.c.o libauthz.a.p/authz_listfile.c.o libauthz.a.p/authz_simple.c.o libauthz.a.p/authz_pamacct.c.o libio.a.p/io_channel-buffer.c.o libio.a.p/io_channel-command.c.o libio.a.p/io_channel-file.c.o libio.a.p/io_channel-null.c.o libio.a.p/io_channel-socket.c.o libio.a.p/io_channel-tls.c.o libio.a.p/io_channel-util.c.o libio.a.p/io_channel-watch.c.o libio.a.p/io_channel-websock.c.o libio.a.p/io_channel.c.o libio.a.p/io_dns-resolver.c.o libio.a.p/io_net-listener.c.o libio.a.p/io_task.c.o tests/unit/test-nested-aio-poll.p/test-nested-aio-poll.c.o tests/unit/test-nested-aio-poll.p/iothread.c.o -Werror -flto -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -pie -Wl,-z,relro -Wl,-z,now -march=native -fno-omit-frame-pointer -Wl,-rpath,/usr/lib64/iscsi -Wl,-rpath-link,/usr/lib64/iscsi -Wl,--start-group libqemuutil.a subprojects/libvhost-user/libvhost-user-glib.a subprojects/libvhost-user/libvhost-user.a /usr/lib64/libzstd.so /usr/lib64/libz.so /usr/lib64/iscsi/libiscsi.so -laio /usr/lib64/liburing.so -lblkio /usr/lib64/libcurl.so /usr/lib64/libacl.so /usr/lib64/libgfapi.so /usr/lib64/libglusterfs.so /usr/lib64/libgfrpc.so /usr/lib64/libgfxdr.so /usr/lib64/libuuid.so /usr/lib64/libnfs.so /usr/lib64/libssh.so /usr/lib64/libglib-2.0.so /usr/lib64/libgmodule-2.0.so -pthread -lbz2 /usr/lib64/libgnutls.so -lpam -lnuma /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so -lm -Wl,--end-group
In function ‘aio_notify’,
    inlined from ‘aio_bh_enqueue’ at ../util/async.c:96:5,
    inlined from ‘aio_bh_schedule_oneshot_full’ at ../util/async.c:139:5,
    inlined from ‘aio_wait_kick.part.0’ at ../util/aio-wait.c:54:9:
../util/async.c:494:5: error: ‘__atomic_store_1’ writing 1 byte into a region of size 0 overflows the destination [-Werror=stringop-overflow=]
  494 |     qatomic_set(&ctx->notified, true);
      |     ^
In function ‘aio_wait_kick.part.0’:
lto1: note: destination object is likely at address zero
In function ‘aio_notify’,
    inlined from ‘aio_bh_enqueue’ at ../util/async.c:96:5,
    inlined from ‘aio_bh_schedule_oneshot_full’ at ../util/async.c:139:5,
    inlined from ‘aio_wait_kick.part.0’ at ../util/aio-wait.c:54:9:
../util/async.c:501:9: error: ‘__atomic_load_4’ writing 4 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=]
  501 |     if (qatomic_read(&ctx->notify_me)) {
      |         ^
In function ‘aio_wait_kick.part.0’:
lto1: note: destination object is likely at address zero
lto1: all warnings being treated as errors

Steps to reproduce

  1. Build qemu from source, probably with LTO enabled and recent GCC.
Edited by Richard W.M. Jones
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information