On Mon, 2009-05-11 at 12:11 +0100, Daniel P. Berrange wrote:
Back in March I attempted to fix the event loop handling of deleted
file
handles
http://www.redhat.com/archives/libvir-list/2009-March/msg00246.html
but have merely succeeded in screwing it up in a different fun & exciting
way. That patch fixed a case where there was a deleted file handle in the
list at the time virEventRunOnce() starts. Which was nice. Not nice, though
was that it then breaks the case where a file handle is deleted during the
course of dispatching events afer poll(). Investigating this also identified
that when we were marking a file handle as deleted, we were forgetting to
run virEventInterrupt(), which meant that in some cases the main thread
would not be woken up until the next event triggers. Not very critical,
but at the same time, not good because it delays cleanup & release of
resources.
This series of patches fixes the problems, and more importantly, adds a
unit test which cover these nasty edge cases.
It's not obvious to me from your description, so for others, one of the
problems these patches fix is where destroying one running guest can
cause another to also be destroyed:
https://bugzilla.redhat.com/499698
Cheers,
Mark.