[libvirt] How to suppress error printing to stderr from virConnectOpen*?
Richard W.M. Jones
rjones at redhat.com
Mon May 9 09:38:15 UTC 2011
On Mon, May 09, 2011 at 10:32:10AM +0100, Daniel P. Berrange wrote:
> On Fri, May 06, 2011 at 05:43:41PM +0100, Richard W.M. Jones wrote:
> >
> > I can set the global error handling function (virSetErrorFunc). That
> > doesn't seem to be a good idea from a library. Looking at the code,
> > it doesn't appear that the internal virErrorHandler is thread-local,
> > so I can't set it and restore it around the function call.
> >
> > I can set the error handling function _after_ I've got a connection
> > object (virConnSetErrorFunc). That doesn't help with making the
> > initial connection.
> >
> > libguestfs itself has the same problem with the guestfs_create call,
> > so I'm not going to point any fingers :-) However it seems like a
> > shortcoming of the libvirt API.
> >
> > Am I missing something here?
>
> Not really. I really consider the default error printing function
> itself to be a flawed idea as a library shouldn't print to stderr
> by default. I'm really torn on whether we can change it though,
> since although most apps disable it, some may be relying on it.
>
> Perhaps adding a flag to virConnectOpenAuth(), VIR_CONNECT_NOP_ERROR_FUNC
> but not sure how practical that is to actually implement in our internal
> error handling infrastructure.
Is there a way to add / make the default error function be thread
local?
As long as I can null it out around the call safely (without affecting
other threads) then that fixes it for me.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/
More information about the libvir-list
mailing list