[ https://issues.apache.org/jira/browse/XERCESC-2107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
vikas updated XERCESC-2107: --------------------------- Description: Memory analyzer tool (valgrind) showing memory leak at TranscodeFromStr. No exception raised when constructing TranscodeFromStr object. Below is snip from valgrind ==8884== 20,770 bytes in 1 blocks are possibly lost in loss record 2,123 of 2,137 ==8884== at 0x4C2A243: operator new(unsigned long) (vg_replace_malloc.c:334) ==8884== by 0xA374512: xercesc_3_1::MemoryManagerImpl::allocate(unsigned long) (in /usr/openv/lib/libvxxml4c.so.6) ==8884== by 0xA2E4DFD: xercesc_3_1::TranscodeFromStr::transcode(unsigned char const*, unsigned long, xercesc_3_1::XMLTranscoder*) (in /usr/openv/lib/libvxxml4c.so.6) ==8884== by 0xA2E50BC: xercesc_3_1::TranscodeFromStr::TranscodeFromStr(unsigned char const*, unsigned long, char const*, xercesc_3_1::MemoryManager*) (in /usr/openv/lib/libvxxml4c.so.6) I called XMLPlatformUtils::Initialize() at the time of loading and XMLPlatformUtils::Terminate() when exiting. Sample code................. XMLPlatformUtils::Initialize(); { std::string sample = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?> <testxml> <IDList> <ID dentifier=\"demo1\" Name=\"demo1\"> </ID> <ID dentifier=\"demo2\" Name=\"demo2\"> </ID> </IDList> </testxml>"; XMLCh * xmlStr = xercesc::XMLString::transcode (sample.c_str()) TranscodeToStr transcodeTo(xmlStr, "UTF-8"); const XMLByte* bytes = transcodeTo.adopt(); xercesc::XMLString::release(&xmlStr); TranscodeFromStr transcodeFrom(bytes, transcodeTo.length(),"UTF-8"); XMLCh * xmlch_ptr = transcodeFrom.adopt(); char * c_ptr = xercesc::XMLString::transcode(xmlch_ptr); std::string encodedstr(c_ptr); xercesc::XMLString::release(&c_ptr); } XMLPlatformUtils::Terminate(); was: Memory analyzer tool (valgrind) showing memory leak at TranscodeFromStr No exception raised when constructing TranscodeFromStr object. Below is snip from valgrind ==8884== 20,770 bytes in 1 blocks are possibly lost in loss record 2,123 of 2,137 ==8884== at 0x4C2A243: operator new(unsigned long) (vg_replace_malloc.c:334) ==8884== by 0xA374512: xercesc_3_1::MemoryManagerImpl::allocate(unsigned long) (in /usr/openv/lib/libvxxml4c.so.6) ==8884== by 0xA2E4DFD: xercesc_3_1::TranscodeFromStr::transcode(unsigned char const*, unsigned long, xercesc_3_1::XMLTranscoder*) (in /usr/openv/lib/libvxxml4c.so.6) ==8884== by 0xA2E50BC: xercesc_3_1::TranscodeFromStr::TranscodeFromStr(unsigned char const*, unsigned long, char const*, xercesc_3_1::MemoryManager*) (in /usr/openv/lib/libvxxml4c.so.6) Called XMLPlatformUtils::Initialize() at the time of loading and XMLPlatformUtils::Terminate() when exiting. Sample code................. XMLPlatformUtils::Initialize(); { std::string sample = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?> <testxml> <IDList> <ID dentifier=\"demo1\" Name=\"demo1\"> </ID> <ID dentifier=\"demo2\" Name=\"demo2\"> </ID> </IDList> </testxml>"; XMLCh * xmlStr = xercesc::XMLString::transcode (sample.c_str()) TranscodeToStr transcodeTo(xmlStr, "UTF-8"); const XMLByte* bytes = transcodeTo.adopt(); xercesc::XMLString::release(&xmlStr); TranscodeFromStr transcodeFrom(bytes, transcodeTo.length(),"UTF-8"); XMLCh * xmlch_ptr = transcodeFrom.adopt(); char * c_ptr = xercesc::XMLString::transcode(xmlch_ptr); std::string encodedstr(c_ptr); xercesc::XMLString::release(&c_ptr); } XMLPlatformUtils::Terminate(); > TranscodeFromStr::TranscodeFromStr definate leak alert > ------------------------------------------------------- > > Key: XERCESC-2107 > URL: https://issues.apache.org/jira/browse/XERCESC-2107 > Project: Xerces-C++ > Issue Type: Bug > Affects Versions: 3.1.1 > Environment: RHEL 3.10 > Reporter: vikas > > Memory analyzer tool (valgrind) showing memory leak at TranscodeFromStr. > No exception raised when constructing TranscodeFromStr object. > Below is snip from valgrind > ==8884== 20,770 bytes in 1 blocks are possibly lost in loss record 2,123 of > 2,137 > ==8884== at 0x4C2A243: operator new(unsigned long) > (vg_replace_malloc.c:334) > ==8884== by 0xA374512: xercesc_3_1::MemoryManagerImpl::allocate(unsigned > long) (in /usr/openv/lib/libvxxml4c.so.6) > ==8884== by 0xA2E4DFD: xercesc_3_1::TranscodeFromStr::transcode(unsigned > char const*, unsigned long, xercesc_3_1::XMLTranscoder*) (in > /usr/openv/lib/libvxxml4c.so.6) > ==8884== by 0xA2E50BC: > xercesc_3_1::TranscodeFromStr::TranscodeFromStr(unsigned char const*, > unsigned long, char const*, xercesc_3_1::MemoryManager*) (in > /usr/openv/lib/libvxxml4c.so.6) > I called XMLPlatformUtils::Initialize() at the time of loading and > XMLPlatformUtils::Terminate() when exiting. > Sample code................. > XMLPlatformUtils::Initialize(); > { > std::string sample = "<?xml version=\"1.0\" encoding=\"UTF-8\" > standalone=\"no\" ?> <testxml> <IDList> <ID dentifier=\"demo1\" > Name=\"demo1\"> </ID> <ID dentifier=\"demo2\" Name=\"demo2\"> </ID> </IDList> > </testxml>"; > XMLCh * xmlStr = xercesc::XMLString::transcode (sample.c_str()) > TranscodeToStr transcodeTo(xmlStr, "UTF-8"); > const XMLByte* bytes = transcodeTo.adopt(); > xercesc::XMLString::release(&xmlStr); > TranscodeFromStr transcodeFrom(bytes, transcodeTo.length(),"UTF-8"); > XMLCh * xmlch_ptr = transcodeFrom.adopt(); > char * c_ptr = xercesc::XMLString::transcode(xmlch_ptr); > std::string encodedstr(c_ptr); > xercesc::XMLString::release(&c_ptr); > } > XMLPlatformUtils::Terminate(); -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org For additional commands, e-mail: c-dev-h...@xerces.apache.org