Uploaded image for project: 'Xerces-C++'
  1. Xerces-C++
  2. XERCESC-1845

ABW: Array bounds write: xercesc_3_0::XMemory::XMemory() [libxerces-c.a]

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • 3.0.0
    • 3.0.1, 3.1.0
    • Utilities
    • None
    • SunOS merlin.sce.carleton.ca 5.9 Generic_122300-21 sun4u sparc SUNW,Sun-Blade-100

    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

      { => memptr = ::operator new(size); }

      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.

      Attachments

        Activity

          People

            bsk Boris Kolpackov
            rgfranks Greg Franks
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: