Creating multiple VM`s via libvirt fails with the follwing error: <br />
"libvirtError: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."<br />
<br />
Investigation showed that bug occurs due to problem in systemd-machined message loop. <br />
<br />
Systemd-Machined main loop works in the following way :<br />
<br />
loop :<br />
1) perform GC (Note at the end)<br />
2) read messages from DBUS and dispatch one<br />
3) if more messages pending goto (1)<br />
3) perform GC (NOTE at the end)<br />
4) poll on DBUS fd<br />
5) goto step 1<br />
<br />
This works fine, except that in step (3) and (1)<br />
there is a message send/reply receive of<br />
r = bus_method_call_with_reply(<br />
manager->bus,<br />
"org.freedesktop.systemd1",<br />
"/org/freedesktop/systemd1",<br />
"org.freedesktop.systemd1.Manager",<br />
"StopUnit",<br />
&reply,<br />
error,<br />
DBUS_TYPE_STRING, &unit,<br />
DBUS_TYPE_STRING, &fail,<br />
DBUS_TYPE_INVALID);<br />
<br />
which causes network layer to read/write messages to DBUS fd. In case that any <br />
other message gets in during this send/receive cycle it wont be processed till <br />
next stage (2) which will occur only in case that more messages are received <br />
by machined.
↧