On Tue, Jan 01, 2008 at 06:00:51AM -0800, tam wrote:
> 
> Hi,
> My server (c++/multithreaded/linux) is using libxml2 version 2.6.11.
> In the startup the main thread call xmlInitParser, and in case of initiated
> shutdown call to xmlCleanupParser.
> 
> A thread may call “xmlParseFile” with nonexisting filename.
> Purify point to memory-leak each time “xmlParseFile” attempt to load
> nonexisting file:
>          MLK: 75 bytes leaked at 0x10f02ca0
>          This memory was allocated from:
>                malloc         [rtlib.o]
>                xmlStrndup     [libxml2.so.2]
>                xmlStrdup      [libxml2.so.2]
>                xmlCopyError   [libxml2.so.2]
>                __xmlRaiseError [libxml2.so.2]
>                __xmlLoaderErr [libxml2.so.2]
>          MLK: 41 bytes leaked at 0x18f71420
>          This memory was allocated from:
>                malloc         [rtlib.o]
>                xmlStrndup     [libxml2.so.2]
>                xmlStrdup      [libxml2.so.2]
>                xmlCopyError   [libxml2.so.2]
>                __xmlRaiseError [libxml2.so.2]
>                __xmlLoaderErr [libxml2.so.2]
> 
> What is the right approach to catch and clean this memory?

  Using a recent version like 2.6.30 is likely to fix it.
Calling xmlResetLastError() on the thread where the error occured might
fix it on 2.6.11 too.

> Should I use xmlGenericErrorFunc (void * ctx,  const char * msg) … but what
> to delete?

  That would alllow to get the error reported as a function callback.
But the global variable may still be updated.

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
[EMAIL PROTECTED]  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to