[
https://issues.apache.org/jira/browse/XERCESC-1962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Scott Cantor updated XERCESC-1962:
----------------------------------
Affects Version/s: 3.1.0
3.1.2
3.1.3
3.1.4
> 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.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4
> Environment: Linux Ubuntu 10.10 i386
> Reporter: Paulo Zanoni
> Assignee: Alberto Massari
> Labels: example, leak, patch,
> Fix For: 3.2.0
>
> Attachments: xinclude-example.xml, xinclude_leak.cpp,
> xinclude-leak.patch
>
> Original Estimate: 0h
> Remaining Estimate: 0h
>
> 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 was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]