Hello Michael,

I did some more experiments, and it seems it works if the host has just a
little bit more than 1 GiB of RAM. With exactly 1 GiB it fails, with 1152MiB it
works.

Michael Tokarev [2020-05-26 12:55 +0300]:
> 26.05.2020 12:10, Michael Tokarev пишет:
> > Control: tag -1 + moreinfo unreproducible
> > 
> > 26.05.2020 11:27, Martin Pitt wrote:
> >> But with 5.0, not any more:
> >>
> >> | $ admin@debian:~$ qemu-system-x86_64 -nographic
> >> | Could not allocate dynamic translator buffer
> > 
> > This is something.. wrong.
> > This happens during early init state, before qemu tries to run
> > any guest code, before even initializing virtual CPUs.
> > 
> > By default the command above definitely works just fine here.
> > Do you have some init/conf file which is read by qemu at
> > startup, something in /etc/qemu/qemu.conf maybe?
> 
> Can you please run this simple command under strace and post/attach
> strace output?

Full strace: https://paste.centos.org/view/71ec1d55

This is the interesting bit:

13489 io_uring_setup(128, {flags=0, sq_thread_cpu=0, sq_thread_idle=0, 
sq_entries=128, cq_entries=256, 
features=IORING_FEAT_SINGLE_MMAP|IORING_FEAT_NODROP|IORING_FEAT_SUBMIT_STABLE|IORING_FEAT_RW_CUR_POS|IORING_FEAT_CUR_PERSONALITY,
 sq_off={head=0, tail=64, ring_mask=256, ring_entries=264, flags=276, 
dropped=272, array=4928}, cq_off={head=128, tail=192, ring_mask=260, 
ring_entries=268, overflow=280, cqes=320}}) = 6
13489 mmap(NULL, 5440, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, 6, 0) = 
0x7f43e1a96000
13489 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, 6, 
0x10000000) = 0x7f43e1a94000
[...]
13489 mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0x7f43de7ca000
13489 mmap(NULL, 1073741824, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)

That last mmap indeed tries to map 1 GiB, which isn't available if the host has
1 GiB only (minus some reserved kernel memory).

Martin

Reply via email to