
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@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/