[libvirt] [PATCH] Fix error report from nl_recvmsg

Daniel Veillard veillard at redhat.com
Thu Feb 28 16:31:34 UTC 2013


On Thu, Feb 28, 2013 at 04:24:17PM +0000, Daniel P. Berrange wrote:
> On Thu, Feb 28, 2013 at 04:16:37PM +0000, Daniel P. Berrange wrote:
[...]
> Oh joy, it is worse than you could possibly imagine.
> 
> On libnl1 the return value is a valid -errno, while in libnl3
> the return value is an error code of its own invention.
> 
> Further in libnl1 we can';t rely on the global errno, because
> other calls libnl does may have overritten it with garbage.
> We must use the return value from the function.
> 
> For yet more fun, libnl1's error handling is not threadsafe.
> Whenever it hits an error with a syscall, it internally
> runs  __nl_error() which mallocs/frees a static global
> variable containing the contents of strerror() which is
> itself also not threadsafe :-(
> 
> Did I mention we should just throw out all versions of libnl
> entirely and talk to the kernel ourselves..... It has caused
> us no end of pain in all its versions.

  No chance of educating them instead ? We can't rewrite everything :)

Daniel

-- 
Daniel Veillard      | Open Source and Standards, Red Hat
veillard at redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list