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
- Build qemu from source, probably with LTO enabled and recent GCC.
Edited by Richard W.M. Jones