After upgrading to systemd 248, the problem seems to go away.
I tried to reproduce the issue with:
But also failed (uses systemd 239).
There might be some other differences though (like lvmetad doesn't
exist in debian 10 anymore, etc) - but it does seem like a basic
systemd/udev problem of parsing process output.
I wonder if there is anything libguestfs can do to mitigate this bug.
(since the fix is obviously in .c code deep inside libsystemd).
Some kind of fix / or at least a warning for the next users that will
be affected by this bug.
I originally thought that changing the udev rules to use "bash -c
sleep 1 && dmsetup splitnames" might cause the process to not exit too
quickly, thus avoiding the race in systemd but it seems super hacky
(and I didn't test that this works).
But again, first I think it's important to understand the extent of
this bug throughout the distributions.
Sam
On Thu, Apr 8, 2021 at 6:59 PM Sam Eiderman <sameid(a)google.com> wrote:
Yes, that's what I understood, but for some reason the appliance stayed on v241 no
matter what I did so I started questioning the foundations :-).
I guess it was just cached somewhere since when I rebuilt the docker from scratch it
worked.
One more thing, I had to:
echo "/lib/systemd/libsystemd-shared-248.so" >> appliance/hostfiles.in
Since this file name is obviously version dependent, but now it seems that it's using
systemd/udev v248 properly.
Now I'm stress testing with it trying to see if I get a reproduction (hopefully
not).
I wonder if this bug is linux wide, at least in terms of libguestfs, and was it just not
reported so far.
I could try using the appliances from
libguestfs.org to see if I get a reproduction with
them as well.
Something tells me this isn't just debian specific.
Sam
On Thu, Apr 8, 2021 at 4:43 PM Richard W.M. Jones <rjones(a)redhat.com> wrote:
>
> On Thu, Apr 08, 2021 at 04:40:32PM +0300, Sam Eiderman wrote:
> > However, during libguestfs building I still see this line:
> >
> > Get:37
http://deb.debian.org/debian buster/main amd64 systemd amd64
> > 241-7~deb10u7 [3499 kB]
> >
> > So it seems that it downloads the systemd package directly from debian and not
> > using the one installed on the host docker.
>
> But it only downloads that to examine the configuration files.
> Suggest having a look at how supermin works, it's quite neat!
>
>
https://libguestfs.org/supermin.1.html#SUPERMIN-APPLIANCES
>
> Rich.
>
> --
> Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
> Read my programming and virtualization blog:
http://rwmj.wordpress.com
> virt-builder quickly builds VMs from scratch
>
http://libguestfs.org/virt-builder.1.html
>