Hi, Does that mean I don't have to create the parser and membuf objet with 'new'?? If not then how should I create it? In my application the same process receives request for xml parsing at different times. Each time I am creating a new object of parser and then deleting it too.
Also, I checked my process giving it a bad input. In that case the process gets core dump releasing all the memory acquired. Please help. Thanks, Abhinav Kishore -----Original Message----- From: Tobias [mailto:[email protected]] Sent: Tuesday, June 16, 2009 1:05 PM To: [email protected] Subject: Re: Regd issue : Memory leak in 'Parse' function of DOMParser neither the parser nor the membuf need to be heap-allocated. this kind of coding style leaks memory in case of exceptions. perhaps the process is leaking memory only on bad input. regards tobias ----- Original Message ----- From: "Abhinav Kishore Srivastava" <[email protected]> To: <[email protected]> Sent: Monday, June 15, 2009 12:55 PM Subject: Regd issue : Memory leak in 'Parse' function of DOMParser Hi, There is a memory leak in the parse function of XercesDOMParser. Please find below the details: OS used: Solaris 10 Xerces version: 2.8.0 Software used: Rogue wave libraries for string functions. Code Snippet which leaks: RWCString xmlString; XmlProcessData m_xmlDocData; ParserErrorHandler* m_errorHandler; int errorCount = 0; m_domParser = new XercesDOMParser(); RWCString schemaLocationsString; bool noNameSpace; m_xmlDocData.GetSchemaLocation(schemaLocationsString, noNameSpace) m_domParser->setExternalSchemaLocation(schemaLocationsString); m_domParser->setValidationSchemaFullChecking(false); XercesDOMParser::ValSchemes valScheme; if (m_xmlDocData.GetXsdValidationLevel() == XmlProcessData::VALIDATION_OFF) valScheme = XercesDOMParser::Val_Never; else if (m_xmlDocData.GetXsdValidationLevel() == XmlProcessData::VALIDATION_ON) valScheme = XercesDOMParser::Val_Always; else valScheme = XercesDOMParser::Val_Auto; m_domParser->setValidationScheme(valScheme); m_domParser->setDoNamespaces(true); // optional m_domParser->setDoSchema(true); m_domParser->setErrorHandler(m_errorHandler); } RWCString theString = xmlbuffer; m_errorHandler->resetErrors(); MemBufInputSource* membuf; membuf = new MemBufInputSource( (const XMLByte*)theString.data(), strlen(theString.data()), "APIXMLInterface",false); const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); m_domParser->parse(*membuf); //memory utilization increases here and later on when delete m_domParser is called, it is not released. const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); unsigned long duration = endMillis - startMillis; m_doc = m_domParser->getDocument(); delete membuf; membuf = 0; delete m_domParser; m_domParser = 0; Can anyone suggest why is the memory leak happening and what can be done to prevent this. Thanks and Regards, Abhinav Kishore GTCS- ASG Desk:+91 20 22970170 Mob:0-9689942815 Team phone (UK): 01977590500 **************** CAUTION - Disclaimer ***************** This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the Infosys e-mail system. ***INFOSYS******** End of Disclaimer ********INFOSYS*** --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
