DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=26530>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=26530 FMR: Free memory read bool xercesc_2_4::XMLString::equals(const unsigned short*const,const unsigned short*const) [libxerces-c.so.24] Summary: FMR: Free memory read bool xercesc_2_4::XMLString::equals(const unsigned short*const,const unsigned short*const) [libxerces- c.so.24] Product: Xerces-C++ Version: 2.4.0 Platform: Sun OS/Version: Solaris Status: NEW Severity: Major Priority: Other Component: Miscellaneous AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] I ran purify on xerces compiled with debugging enabled. I am getting a "free memory read". The stack traces of the read, new, and delete is shown below. Build is on Solaris 2.9. Sunpro SC5.0. FMR: Free memory read This is occurring while in: bool xercesc_2_4::XMLString::equals(const unsigned short*const,const unsigned short*const) [libxerces-c.so.24] bool xercesc_2_4::HashXMLCh::equals(const void*const,const void*const) [HashXMLCh.cpp:77] bool HashXMLCh::equals(const void *const key1, const void *const key2) { => return (XMLString::equals((XMLCh*)key1, (XMLCh*)key2)) ? true : false; } XERCES_CPP_NAMESPACE_END xercesc_2_4::RefHashTableBucketElem<unsigned>*xercesc_2_4::RefHashTableOf<unsigned>::findBucketElem(const void*const,unsigned&) [RefHashTableOf.c:529] unsigned*xercesc_2_4::RefHashTableOf<unsigned>::get(const void*const) [RefHashTableOf.c:399] unsigned xercesc_2_4::IGXMLScanner::buildAttList(const xercesc_2_4::RefVectorOf<xercesc_2_4::KVStringPair>&,const unsigned,xercesc_2_4::XMLElementDecl*,xercesc_2_4::RefVectorOf<xercesc_2_4::XMLAttr>&) [IGXMLScanner2.cpp:344] bool xercesc_2_4::IGXMLScanner::scanStartTagNS(bool&) [IGXMLScanner.cpp:2738] bool xercesc_2_4::IGXMLScanner::scanContent(const bool) [IGXMLScanner.cpp:931] void xercesc_2_4::IGXMLScanner::scanDocument(const xercesc_2_4::InputSource&) [IGXMLScanner.cpp:247] void xercesc_2_4::AbstractDOMParser::parse(const xercesc_2_4::InputSource&) [AbstractDOMParser.cpp:460] void xercesc_2_4::IGXMLScanner::resolveSchemaGrammar(const unsigned short*const,const unsigned short*const) [IGXMLScanner2.cpp:1752] void xercesc_2_4::IGXMLScanner::scanRawAttrListforNameSpaces(const xercesc_2_4::RefVectorOf<xercesc_2_4::KVStringPair>*,int) [IGXMLScanner2.cpp:1621] bool xercesc_2_4::IGXMLScanner::scanStartTagNS(bool&) [IGXMLScanner.cpp:2205] bool xercesc_2_4::IGXMLScanner::scanContent(const bool) [IGXMLScanner.cpp:931] void xercesc_2_4::IGXMLScanner::scanDocument(const xercesc_2_4::InputSource&) [IGXMLScanner.cpp:247] void xercesc_2_4::XMLScanner::scanDocument(const unsigned short*const) [XMLScanner.cpp:453] void xercesc_2_4::XMLScanner::scanDocument(const char*const) [XMLScanner.cpp:461] void xercesc_2_4::AbstractDOMParser::parse(const char*const) [AbstractDOMParser.cpp:506] void readXML(const char*) [xmlread.cc:254] readInModel [xmlread.cc:188] bool Model::load(__FILE*,const char*,const char*,__FILE*,const char*,__FILE*) [model.cc:620] void process(const char*,const char*) [srvn2eepic.o] main [srvn2eepic.cc:992] _start [crt1.o] Reading 2 bytes from 0x33edb8 in the heap. Address 0x33edb8 is at the beginning of a freed block of 10 bytes. This block was allocated from: malloc [rtlib.o] c2n6Fi_Pv___1 [libCrun.so.1] void*operator new(unsigned) [rtlib.o] void*xercesc_2_4::MemoryManagerImpl::allocate(unsigned) [MemoryManagerImpl.cpp:83] void xercesc_2_4::KVStringPair::setKey(const unsigned short*const) [KVStringPair.cpp:186] { fMemoryManager->deallocate(fKey); //delete [] fKey; fKeyAllocSize = len + 1; => fKey = (XMLCh*) fMemoryManager->allocate(fKeyAllocSize * sizeof(XMLCh)); //new XMLCh[fKeyAllocSize]; } XMLString::copyString(fKey, newKey); void xercesc_2_4::KVStringPair::set(const unsigned short*const,const unsigned short*const) [KVStringPair.cpp:209] xercesc_2_4::KVStringPair::KVStringPair(const unsigned short*const,const unsigned short*const,xercesc_2_4::MemoryManager*const) [KVStringPair.cpp:154] unsigned xercesc_2_4::IGXMLScanner::rawAttrScan(const unsigned short*const,xercesc_2_4::RefVectorOf<xercesc_2_4::KVStringPair>&,bool&) [IGXMLScanner.cpp:783] bool xercesc_2_4::IGXMLScanner::scanStartTagNS(bool&) [IGXMLScanner.cpp:2137] bool xercesc_2_4::IGXMLScanner::scanContent(const bool) [IGXMLScanner.cpp:931] void xercesc_2_4::IGXMLScanner::scanDocument(const xercesc_2_4::InputSource&) [IGXMLScanner.cpp:247] void xercesc_2_4::AbstractDOMParser::parse(const xercesc_2_4::InputSource&) [AbstractDOMParser.cpp:460] void xercesc_2_4::IGXMLScanner::resolveSchemaGrammar(const unsigned short*const,const unsigned short*const) [IGXMLScanner2.cpp:1752] void xercesc_2_4::IGXMLScanner::scanRawAttrListforNameSpaces(const xercesc_2_4::RefVectorOf<xercesc_2_4::KVStringPair>*,int) [IGXMLScanner2.cpp:1621] bool xercesc_2_4::IGXMLScanner::scanStartTagNS(bool&) [IGXMLScanner.cpp:2205] bool xercesc_2_4::IGXMLScanner::scanContent(const bool) [IGXMLScanner.cpp:931] void xercesc_2_4::IGXMLScanner::scanDocument(const xercesc_2_4::InputSource&) [IGXMLScanner.cpp:247] void xercesc_2_4::XMLScanner::scanDocument(const unsigned short*const) [XMLScanner.cpp:453] void xercesc_2_4::XMLScanner::scanDocument(const char*const) [XMLScanner.cpp:461] void xercesc_2_4::AbstractDOMParser::parse(const char*const) [AbstractDOMParser.cpp:506] void readXML(const char*) [xmlread.cc:254] readInModel [xmlread.cc:188] bool Model::load(__FILE*,const char*,const char*,__FILE*,const char*,__FILE*) [model.cc:620] void process(const char*,const char*) [srvn2eepic.o] main [srvn2eepic.cc:992] _start [crt1.o] There have been 21 frees since this block was freed from: free [rtlib.o] c2k6FPv_v___1 [libCrun.so.1] void operator delete(void*) [rtlib.o] void xercesc_2_4::MemoryManagerImpl::deallocate(void*) [MemoryManagerImpl.cpp:96] void MemoryManagerImpl::deallocate(void* p) { => ::operator delete(p); } XERCES_CPP_NAMESPACE_END void xercesc_2_4::KVStringPair::setKey(const unsigned short*const) [KVStringPair.cpp:184] if (len >= fKeyAllocSize) { => fMemoryManager->deallocate(fKey); //delete [] fKey; fKeyAllocSize = len + 1; fKey = (XMLCh*) fMemoryManager->allocate(fKeyAllocSize * sizeof(XMLCh)); //new XMLCh[fKeyAllocSize]; } void xercesc_2_4::KVStringPair::set(const unsigned short*const,const unsigned short*const) [KVStringPair.cpp:209] unsigned xercesc_2_4::IGXMLScanner::rawAttrScan(const unsigned short*const,xercesc_2_4::RefVectorOf<xercesc_2_4::KVStringPair>&,bool&) [IGXMLScanner.cpp:794] bool xercesc_2_4::IGXMLScanner::scanStartTagNS(bool&) [IGXMLScanner.cpp:2137] bool xercesc_2_4::IGXMLScanner::scanContent(const bool) [IGXMLScanner.cpp:931] void xercesc_2_4::IGXMLScanner::scanDocument(const xercesc_2_4::InputSource&) [IGXMLScanner.cpp:247] void xercesc_2_4::AbstractDOMParser::parse(const xercesc_2_4::InputSource&) [AbstractDOMParser.cpp:460] void xercesc_2_4::IGXMLScanner::resolveSchemaGrammar(const unsigned short*const,const unsigned short*const) [IGXMLScanner2.cpp:1752] void xercesc_2_4::IGXMLScanner::scanRawAttrListforNameSpaces(const xercesc_2_4::RefVectorOf<xercesc_2_4::KVStringPair>*,int) [IGXMLScanner2.cpp:1621] bool xercesc_2_4::IGXMLScanner::scanStartTagNS(bool&) [IGXMLScanner.cpp:2205] bool xercesc_2_4::IGXMLScanner::scanContent(const bool) [IGXMLScanner.cpp:931] void xercesc_2_4::IGXMLScanner::scanDocument(const xercesc_2_4::InputSource&) [IGXMLScanner.cpp:247] void xercesc_2_4::XMLScanner::scanDocument(const unsigned short*const) [XMLScanner.cpp:453] void xercesc_2_4::XMLScanner::scanDocument(const char*const) [XMLScanner.cpp:461] void xercesc_2_4::AbstractDOMParser::parse(const char*const) [AbstractDOMParser.cpp:506] void readXML(const char*) [xmlread.cc:254] readInModel [xmlread.cc:188] bool Model::load(__FILE*,const char*,const char*,__FILE*,const char*,__FILE*) [model.cc:620] void process(const char*,const char*) [srvn2eepic.o] main [srvn2eepic.cc:992] _start [crt1.o] FMR Free memory read WARNING An FMR message indicates that your program is about to read from memory within the heap which is not in or near a currently allocated block. This could be a dangling pointer to a block of memory that has already been freed (caused by retaining the pointer too long, or freeing the memory too soon). Alternatively, it could be the result of indexing very far off the end of a valid block, or using a completely random pointer which happens to fall within the heap seg- ment. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]