From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: gaosong <gaosong@loongson.cn>, qemu-devel@nongnu.org
Cc: quintela@redhat.com,
Richard Henderson <richard.henderson@linaro.org>,
kwolf@redhat.com, hreitz@redhat.com,
maobibo <maobibo@loongson.cn>
Subject: Re: qemu-iotest 267 got a FPE error when TARGET_PAGE_BITS 16K
Date: Mon, 6 Jun 2022 12:17:32 +0100 [thread overview]
Message-ID: <Yp3iTLMVHGEAa6pb@work-vm> (raw)
In-Reply-To: <60071e6b-35fd-25c7-225d-5bcf71116afb@loongson.cn>
* gaosong (gaosong@loongson.cn) wrote:
> Hi.
> I run './tests/qemu-iotests/check -qcow2 267 ' got a FPE error on x86
> host emulation LoongArch , The log is :
>
> ...
>
> +../migration/ram.c:2205:9: runtime error: division by zero
> +AddressSanitizer:DEADLYSIGNAL
Interesting.
> +=================================================================
> +==1685462==ERROR: AddressSanitizer: FPE on unknown address 0x556e650eed6e
> (pc 0x556e650eed6e bp 0x7ffcba14ae20 sp 0x7ffcba14adc0 T0)
> + #0 0x556e650eed6d in ram_save_host_page ../migration/ram.c:2205
> + #1 0x556e650ef78f in ram_find_and_save_block ../migration/ram.c:2284
> + #2 0x556e650f53a1 in ram_save_iterate ../migration/ram.c:3010
> + #3 0x556e64c03aa2 in qemu_savevm_state_iterate
> ../migration/savevm.c:1296
> + #4 0x556e64c06ccc in qemu_savevm_state ../migration/savevm.c:1580
> + #5 0x556e64c0d497 in save_snapshot ../migration/savevm.c:2889
> + #6 0x556e64c29221 in hmp_savevm ../monitor/hmp-cmds.c:1095
> + #7 0x556e64c41b31 in handle_hmp_command_exec ../monitor/hmp.c:1103
> + #8 0x556e64c4234c in handle_hmp_command ../monitor/hmp.c:1155
> + #9 0x556e64c38292 in monitor_command_cb ../monitor/hmp.c:49
> + #10 0x556e6596ceca in readline_handle_byte ../util/readline.c:411
> + #11 0x556e64c44b78 in monitor_read ../monitor/hmp.c:1393
> + #12 0x556e656aa41e in qemu_chr_be_write_impl ../chardev/char.c:201
> + #13 0x556e656aa4c5 in qemu_chr_be_write ../chardev/char.c:213
> + #14 0x556e656b1302 in fd_chr_read ../chardev/char-fd.c:72
> + #15 0x556e652b635f in qio_channel_fd_source_dispatch
> ../io/channel-watch.c:84
> + #16 0x7f2b425c104d in g_main_context_dispatch
> (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5204d)
> + #17 0x556e65949fac in glib_pollfds_poll ../util/main-loop.c:297
> + #18 0x556e6594a18a in os_host_main_loop_wait ../util/main-loop.c:320
> + #19 0x556e6594a486 in main_loop_wait ../util/main-loop.c:596
> + #20 0x556e64b2bb6b in qemu_main_loop ../softmmu/runstate.c:726
> + #21 0x556e64255a69 in qemu_main ../softmmu/main.c:36
> + #22 0x556e64255a9e in main ../softmmu/main.c:45
> + #23 0x7f2b40304082 in __libc_start_main ../csu/libc-start.c:308
> + #24 0x556e6425597d in _start
> (/root/code/github/qemu/build/qemu-system-loongarch64+0x236e97d)
> +
> +AddressSanitizer can not provide additional info.
> +SUMMARY: AddressSanitizer: FPE ../migration/ram.c:2205 in
> ram_save_host_page
> +==1685462==ABORTING
>
> ...
>
> the ram.c
>
> 2199 static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
> 2200 {
> 2201 int tmppages, pages = 0;
> 2202 size_t pagesize_bits =
> 2203 qemu_ram_pagesize(pss->block) >> TARGET_PAGE_BITS;
> 2204 unsigned long hostpage_boundary =
> 2205 QEMU_ALIGN_UP(pss->page + 1, pagesize_bits);
> 2206 unsigned long start_page = pss->page;
> 2207 int res;
> ...
>
> qemu_ram_pagesize(pss->block) >> TARGET_PAGE_BITS; === > 4096 >> 14
> So QEMU_ALIGN_UP(pss->page + 1, pagesize_bits); got a FPE error,
>
> I am not familar with qcow2, Could you help me?
This is not qcow2, this is general live migration code.
The problem here is that TARGET_PAGE_BITS is set by the target,
but under emulation we're running with the smaller host page size.
That never happens under kvm, but sounds reasonable I guess for
emulation.
Now, I wonder what the fix is? Should we always send and align to the
larger of host page/target page, rather than always host?
Dave
> Steps to reproduce:
>
> 1 get code
>
> git clone https://github.com/loongson/qemu/tree/tcg-dev
>
> 2 build
>
> ./configure --disable-rdma --disable-pvrdma --prefix=/usr \
> --target-list="loongarch64-softmmu" \
> --disable-libiscsi --disable-libnfs --disable-libpmem \
> --disable-glusterfs --enable-libusb --enable-usb-redir \
> --disable-opengl --disable-xen --enable-spice --enable-werror \
> --disable-capstone --disable-kvm --enable-debug
> --enable-sanitizers
>
> cd build
>
> make -j32
>
> 3 test
>
> ./tests/qemu-iotests/check -qcow2 267
>
>
> Thanks.
> Song Gao
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
prev parent reply other threads:[~2022-06-06 11:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <60071e6b-35fd-25c7-225d-5bcf71116afb@loongson.cn>
2022-06-06 11:06 ` qemu-iotest 267 got a FPE error when TARGET_PAGE_BITS 16K gaosong
2022-06-06 11:17 ` Dr. David Alan Gilbert [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Yp3iTLMVHGEAa6pb@work-vm \
--to=dgilbert@redhat.com \
--cc=gaosong@loongson.cn \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=maobibo@loongson.cn \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.