This patch set main goal is to allow dumping
of full debug informations for operations occuring
in libvirt daemon before a crash.
The principle is to save all logs to a round-robbin memory
buffer (which we already do, except we never use that
buffer), save the general daemon logs to a libvirtd.log
file for which we keep an open descriptor, and upon
reception of a fatal signal, save the memory buffer
directly to the file descriptor and fsync it.
There is quite a few remarks about this, we already have
that buffer but we don't log everything in, only what's
output, that's what patch 1 changes, then we need to
provide a function to dump this, so there is a new internal
API for it. We also need to be cautious about what
system call we operate from the signal handler, but
basically we should limit ourselves here to write/fsync and
sigaction which are safe there dixit POSIX.
Something like killall -USR2 libvirtd allows to see the
kind of output one get, an idle libvirtd is quiet, but
handle/timer/fdpolls tend to be very verbose, maybe we need
an intermediate debug level, but that would also impact the
API. Maybe now that this part is well debugged some of those
could be suppressed or commented off.
Also the buffer is a statically allocated 64KB, maybe this
could be made more flexible but IMHO that's not fundamental.
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/