I'm running Xen 4.0.1-rc1-pre (21122:7d1d4abd8b44).
In this version, and in all other Xen 3.5-unstable + versions that I've looked
at, is this function in XendDomainInfo.py:
def
getStubdomDomid(self): dom_list =
xstransact.List('/local/domain')
for d in
dom_list:
target = xstransact.Read('/local/domain/' + d +
'/target')
if target is not None and int(target) is self.domid
:
return int(d) return
None
The bolded line has a bug in it,
unfortunately. This function is used in domain destruction, and destruction
works properly when a domain has a stubdom, but only until it reaches a domid of
around 257. Past that, it breaks. This can be easily seen by
simply starting a bunch of HVMs with stubdoms (I tested by creating +
destroying the same one, over and over).
What's interesting is that the function works at
all -- "is" really does not seem to be the right comparator to use
here.
The fix is to change that line to
read:
if
target is not None and int(target) == self.domid :
I have patched all of my existing Xen installs, and
tested the fix. This might make a good candidate for inclusion in 4.0.1, as well
as xen-unstable (if it has the same piece of code).
-John Weekes
|