[ 
https://issues.apache.org/jira/browse/XERCESC-1962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paulo Zanoni updated XERCESC-1962:
----------------------------------

    Attachment: xinclude-example.xml
                xinclude_leak.cpp

Files to reproduce the bug.

Compile and run with valgrind --leak-check=full

> memory leak with XInclude
> -------------------------
>
>                 Key: XERCESC-1962
>                 URL: https://issues.apache.org/jira/browse/XERCESC-1962
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: XInclude
>    Affects Versions: 3.1.1
>         Environment: Linux Ubuntu 10.10 i386
>            Reporter: Paulo Zanoni
>              Labels: example, leak, patch,
>         Attachments: xinclude-example.xml, xinclude_leak.cpp
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> When xerces-c++ is parsing files with XInclude, it leaks memory. You can 
> check the memory leak by running "valgrind".
> This behavior can be reproduced both with the "XInclude" binary and with 
> custom code.
> All you need to do is:
> - create a parser
> - set validation scheme to Val_Auto
> - setDoNamespaces(true)
> - setDoXInclude(true)
> - parser.parse("example.xml");
> I have tracked the bug. The "actual" leak is inside 
> XIncludeUtils::reportError. It uses XMLPlatformUtils::loadMsgSet, which calls 
> loadAMsgSet, which allocates memory and returns to its callee (see 
> XMLPlatformUtils::loadAMsgSet inside utils/PlatformUtils.cpp). The memory 
> allocated by loadAMsgSet is never freed.
> The solution:
> In file xinclude/XIncludeUtils.cpp, function XIncludeUtils::reportError, the 
> pointer allocated by XMLPlatformUtils::loadMsgSet should be freed. For my 
> testings, I just added a "delete erMsgLoader" at the end of the scope, but I 
> am not sure this is enough (since I'm not sure if any of the functions 
> between loadMsgSet and the end of the scope can throw exceptions). It is up 
> to you, developers, find a proper solution =D
> I'll attach examples.
> I locally tested my patch (I rebuild the Ubuntu package) and it seems to have 
> worked, but I didn't test much. I am not familiar with xerces-c code so I'm 
> not sure if it can break anything.
> Thanks,
> Paulo

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: c-dev-h...@xerces.apache.org

Reply via email to