Details
Description
Rational Purify is complaining about memory write overruns: Here is some sample output:
ABW: Array bounds write
This is occurring while in:
xercesc_3_0::XMemory::XMemory() [libxerces-c.a]
xercesc_3_0::XMLMutexMgr::XMLMutexMgr() [libxerces-c.a]
xercesc_3_0::PosixMutexMgr::PosixMutexMgr() [PosixMutexMgr.cpp]
xercesc_3_0::XMLMutexMgr*xercesc_3_0::XMLPlatformUtils::makeMutexMgr(xercesc_3_0::MemoryManager*const) [PlatformUtils.cpp:702]
#if XERCES_USE_MUTEXMGR_NOTHREAD
mgr = new (memmgr) NoThreadMutexMgr;
#elif XERCES_USE_MUTEXMGR_POSIX
=> mgr = new (memmgr) PosixMutexMgr;
#elif XERCES_USE_MUTEXMGR_WINDOWS
mgr = new (memmgr) WindowsMutexMgr;
#else
void xercesc_3_0::XMLPlatformUtils::Initialize(const char*const,const char*const,xercesc_3_0::PanicHandler*const,xercesc_3_0::MemoryManager*const) [PlatformUtils.cpp:220]
// Initialize the platform-specific mutex and file mgrs
=> fgMutexMgr = makeMutexMgr(fgMemoryManager);
fgFileMgr = makeFileMgr(fgMemoryManager);
xercesc_3_0::DOMDocument*readXML(const char*) [xmlcommon.cc:174]
Writing 1 byte to 0x148341c in the heap.
Address 0x148341c is 1 byte past end of a malloc'd block at 0x1483410 of 12 bytes.
This block was allocated from:
malloc [rtlib.o]
c2n6Fi_Pv___1 [libCrun.so.1]
void*operator new(unsigned) [rtlib.o]
void*xercesc_3_0::MemoryManagerImpl::allocate(unsigned) [MemoryManagerImpl.cpp:40]
{
void* memptr;
try
catch(...) {
throw OutOfMemoryException();
void*xercesc_3_0::XMemory::operator new(unsigned,xercesc_3_0::MemoryManager*) [XMemory.cpp:68]
xercesc_3_0::XMLMutexMgr*xercesc_3_0::XMLPlatformUtils::makeMutexMgr(xercesc_3_0::MemoryManager*const) [PlatformUtils.cpp:702]
This only occurs on a Sun Sparc using SunPro CC 5.0. Xerces works fine on Linux and Windoze. This is from the 3.0.0 tarball build.