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
