Hmmm.  I definitely see what you're talking about.  I guess I'm
misinterpretting what the debugger is telling me.  I'm setting a breakpoint
on xmlMallocBreakpoint and getting this traceback.

Memory tag error occurs :0x100c26838
 bye
xmlMemFree(100C26860) error

Breakpoint 1, 0x00000001258e7640 in xmlMallocBreakpoint ()
(gdb) bt
#0  0x00000001258e7640 in xmlMallocBreakpoint ()
#1  0x00000001258b553d in xmlCleanupCharEncodingHandlers ()
#2  0x00000001258beb55 in xmlCleanupParser ()
#3  0x00007fff82d7f7f4 in __cxa_finalize ()
#4  0x00007fff82d7f70c in exit ()
#5  0x000000010000ee0f in start () at checks.h:63
(gdb)



I'm not great with gdb yet.  What further commands can I run to trackdown
exactly where the problem is occuring?  Am I setting up memory debugging
correctly?  What other methods can I use to pinpoint the problem?

Thanks
:Marco

On Wed, Aug 25, 2010 at 4:22 PM, Daniel Veillard <[email protected]>wrote:

> On Sun, Aug 22, 2010 at 05:20:03PM -0400, Marco Rogers wrote:
> > I believe I've found a bug, or at least annoying issue in libxml2.
> >
> > So I've got a library that is using libxml2 heavily. I had to turn on
> memory
> > tracking in the so I can inspect the total memory allocated by libxml2.
> >
> > xmlMemSetup(xmlMemFree, xmlMemMalloc, xmlMemRealloc, xmlMemoryStrdup);
> >
> >   xmlInitMemory();
> >
> > //
> http://github.com/polotek/libxmljs/blob/master/src/libxmljs.cc#L160-161
> >
> > But now I get the Memory tag errors that occur when xml memory isn't
> > allocated or freed properly.  I've studied this issue a lot because I
> > thought it might be a problem of mine.  Here's an example thread below
> (not
> > mine, just helped me understand the problem).
> >
> > http://mail.gnome.org/archives/xml/2010-April/msg00035.html
> >
> > I understand things now and I've been debugging to track down where this
> > happens.  Despite what I might be doing in my library, I always get
> several
> > memory errors.  I've traced the problem to the
> > function xmlCleanupCharEncodingHandlers that gets called in
> > xmlCleanupParser.
> >
> > The function calls xmlFree on all of the names of the handlers.  But the
> > names were not created with xmlMalloc.  They are passed in as literal
> > strings.  See ecoding.c around line 1351.
>
>   Sounds wrong to me on 2 counts:
>    1/ the handler name is up = xmlMemStrdup() line 1286, not the raw
>       strring passed to the function call
>    2/ libxml2 when compiled with memory debug use a memory wrapper
>       which does an xmlMemSetup() equivalent and all functions go
>       though that wrapped allocator. If the problem was present even
>       the most trivial tests would fail in this mode.
>
> The problem is likely to be somewhere else...
>
> Daniel
>
>
> --
> Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
> [email protected]  | Rpmfind RPM search engine http://rpmfind.net/
> http://veillard.com/ | virtualization library  http://libvirt.org/
>



-- 
Marco Rogers
[email protected]

Life is ten percent what happens to you and ninety percent how you respond
to it.
- Lou Holtz
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to