libvirt boot race on xen hypervisor
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libvirt (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Release: Precise
Architecture: amd64
Right after boot the display of running instances is broken when done via xen+ssh:
smb@arcturus:~$ virsh -c xen+ssh:
Id Name State
-------
(same happens when connecting as non-root user locally via xen:///). Running locally as root does work:
root@argabuthon:~# virsh -c xen:/// list
2012-01-27 09:25:46.423+0000: 4448: info : libvirt version: 0.9.8
2012-01-27 09:25:46.423+0000: 4448: warning : xenHypervisorMa
Id Name State
-------
0 Domain-0 running
1 p-t1-micro64 idle
After stopping and starting the libvirt-bin service, this also works in the xen+ssh case:
root@argabuthon:~# service libvirt-bin stop
libvirt-bin stop/waiting
root@argabuthon:~# service libvirt-bin start
libvirt-bin start/running, process 4473
smb@arcturus:~$ virsh -c xen+ssh:
Id Name State
-------
0 Domain-0 running
1 p-t1-micro64 idle
So far it seems possible to see what RPC calls the daemon handles. Unfortunately I am not sure how to or whether it is possible to see results from those calls.
In both cases the sequence seems to start with:
debug : virNetServerCli entSendMessage: 1116 : RPC_SERVER_ CLIENT_ MSG_TX_ QUEUE: client=0x223e000 len=32 prog=536903814 vers=1 proc=51( remoteDispatchN umOfDomainsHelp er) type=1 status=0 serial=2 gramDispatch: 269 : prog=536903814 ver=1 type=0 status=0 serial=2 proc=51 umOfDomainsHelp er:9398 : server=0x2280810 client= 0x7f8380001b90 msg=0x7f8380001f30 rerr=0x7f838d06ec70 args=0x2294c50 ret=0x229f1d0 Domains: 1874 : conn=0x2294fa0 entSendMessage: 1106 : msg=0x7f8380001f30 proc=51 len=32 offset=0 entSendMessage: 1116 : RPC_SERVER_ CLIENT_ MSG_TX_ QUEUE: client= 0x7f8380001b90 len=32 prog=536903814 vers=1 proc=51 type=1 status=0 serial=2 codeLength: 149 : Got length, now need 32[28] total (28[24] more)*
debug : virNetServerPro
debug : remoteDispatchN
debug : virConnectNumOf
debug : virNetServerCli
debug : virNetServerCli
...
debug : virNetMessageDe
*numbers in [] in the non-working case
After this, there seem to be a few messages about handling the message (but nothing that looks like an answer in both cases). Then in the working case, there is a:
debug : virNetServerCli entDispatchRead :886 : RPC_SERVER_ CLIENT_ MSG_RX: client= 0x7f8380001b90 len=32 prog=536903814 vers=1 proc=37( remoteDispatchL istDomainsHelpe r) type=0 status=0 serial=3 gramDispatch: 269 : prog=536903814 ver=1 type=0 status=0 serial=3 proc=37 istDomainsHelpe r:7213 : server=0x2280810 client= 0x7f8380001b90 msg=0x7f8380041fa0 rerr=0x7f838c86dc70 args=0x229f1d0 ret=0x23704e0 omains: 1835 : conn=0x2294fa0, ids=0x2370260, maxids=1 entSendMessage: 1116 : RPC_SERVER_ CLIENT_ MSG_TX_ QUEUE: client= 0x7f8380001b90 len=36 prog=536903814 vers=1 proc=37 type=1 status=0 serial=3
debug : virNetServerPro
debug : remoteDispatchL
debug : virConnectListD
debug : virNetServerCli
So it looks like both traces seem to continue with the same RPC call next. Right now, I do not understand why that difference happens. A first thought would be that the very first call yields a different result. But it does not seem to be different between both traces (except the difference in the message about need and total). So the common next call looks like:
debug : virNetServerCli entDispatchRead :886 : RPC_SERVER_ CLIENT_ MSG_RX: client= 0x7f8380001b90 len=28 prog=536903814 vers=1 proc=25( remoteDispatchN umOfDefinedDoma insHelper) type=0 status=0 serial=4(3 for the non-working case) gramDispatch: 269 : prog=536903814 ver=1 type=0 status=0 serial=4 proc=25 umOfDefinedDoma insHelper: 9206 : server=0x2280810 client= 0x7f8380001b90 msg=0x7f8380001f30 rerr=0x7f838c06cc70 args=0x23704e0 ret=0x2370920 DefinedDomains: 7528 : conn=0x2294fa0 entSendMessage: 1106 : msg=0x7f8380001f30 proc=25 len=32 offset=0 entSendMessage: 1116 : RPC_SERVER_ CLIENT_ MSG_TX_ QUEUE: client= 0x7f8380001b90 len=32 prog=536903814 vers=1 proc=25 type=1 status=0 serial=4
debug : virNetServerPro
debug : remoteDispatchN
debug : virConnectNumOf
debug : virNetServerCli
debug : virNetServerCli