On Fri, Mar 13, 2009 at 03:34:32PM +0000, Daniel P. Berrange wrote:
Ok, turns out the original patch (though worthwhile) was a red
herring.
The core problem was that the event loop was getting confused when we
removed a monitored file handle. It would then start running the wrong
event handler callbacks. So the xenstore watch handler got called even
though no watch was pending :-( This also caused clients to get stuck
because the watch detecting end-of-file on the socket wasn't getting
called.
The patch fixes the loop which dispatches callbacks, so that it does
not assume the index into 'nfds' matches the index in 'handles'. They
have to be tracked indepedantly, to take account of deleted handles.
ACK, this fixes a reproduceable libvirt-cim test problem I was having
and we were hitting the same problem,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/