When I try run master qemu I am hitting a divide by zero error. It seems
to be coming from util/oslib-posix.c in touch_all_pages(). see line 477:

numpages_per_thread = numpages / memset_num_threads;

Poking around the crash dumps, I can see that the smp_cpus parameter
passed in to touch_all_pages() is 0. Going up the stack to
host_memory_backend_memory_complete() I see backend->prealloc_threads is
also 0.

Here’s how I am running qemu

./x86_64-softmmu/qemu-system-x86_64 \
        -kernel /boot/vmlinuz-3.10.0-1062.el7.x86_64  \
        -netdev user,id=net0,hostfwd=tcp::2250-:22 \
        -device e1000e,netdev=net0 \
        -m 1G \
        -initrd /boot/initramfs-3.10.0-1062.el7.x86_64.img  \
        -object 
memory-backend-file,id=ram-node0,prealloc=yes,mem-path=mem,share=yes,size=1G \
        -numa node,nodeid=0,cpus=0,memdev=ram-node0 

I don't see this error on a slightly older qemu, as of commit 105b07f1
(January 27th).

Interestingly when I remove the memory-backend-file parameter I don’t
see the error, i.e. this works:

./x86_64-softmmu/qemu-system-x86_64 \
        -kernel /boot/vmlinuz-3.10.0-1062.el7.x86_64  \
        -netdev user,id=net0,hostfwd=tcp::2250-:22 \
        -device e1000e,netdev=net0 \
        -m 1G \
        -initrd /boot/initramfs-3.10.0-1062.el7.x86_64.img

Looking at the blame data for backends/hostmem.c I see commit ffac16fa
introduced some churn in this part of the code. Has anyone else seen
this issue? Could I be doing something wrong here?

Reply via email to