Uploaded image for project: 'XalanC'
  1. XalanC
  2. XALANC-785

XalanTransformer::Transform gives malloc error after building with libc++ on OSX 10.9

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Blocker
    • Resolution: Unresolved
    • Affects Version/s: 1.11
    • Fix Version/s: None
    • Component/s: XalanC
    • Labels:
      None
    • Environment:
      Build and Execution: OS X 10.14, 10.12, 10.9
      XCode version: 9.4, 8.3, 6.2

      Description

      We are using Xalan and Xerces C++ libraries for XML transformation and parsing.
      It had been working flawlessly till our 10.8 OS X support (with libstdc++ as standard library). Recently we upgraded our project to support target OSX 10.9 with base SDK 10.12 and added C++11 support as well building it on OSX 10.14 with XCode 9.4.
      Since in XCode, C+11 support is only available with libc, we had to rebuilt all the dependencies with C11 to ensure ABI compatibility. But the Xalan binaries (built through runconfigure script) are crashing after rebuilding with libc+ and C++11 support flags.
      The location is always Xalan Transformer::transform() API. I tried debugging with help of malloc guards and stepped through inside the Xalan code as well but the memory for which crash occurs is internally allocated in Xalan code and has no relation to input parameters.

      Below is the call stack:

      #0 0x00007fff879bd866 in __pthread_kill ()
      #1 0x00007fff8cc3535c in pthread_kill ()
      #2 0x00007fff8e63fb1a in abort ()
      #3 0x00007fff91e4d690 in szone_error ()
      #4 0x00007fff91e4ed95 in small_free_list_remove_ptr ()
      #5 0x00007fff91e4b443 in szone_free_definite_size ()
      #6 0x00000001011bd487 in xercesc_3_1::MemoryManagerImpl::deallocate(void*) ()
      #7 0x0000000100d7e539 in xalanc_1_11::ArenaAllocator<xalanc_1_11::XalanDOMString, xalanc_1_11::ArenaBlock<xalanc_1_11::XalanDOMString, unsigned long> >::reset() ()
      #8 0x0000000100d82062 in xalanc_1_11::XalanDOMStringPool::clear() ()
      #9 0x0000000100e8088f in xalanc_1_11::StylesheetConstructionContextDefault::reset() ()
      #10 0x0000000100e80329 in xalanc_1_11::StylesheetConstructionContextDefault::~StylesheetConstructionContextDefault() ()
      #11 0x0000000100ed0559 in xalanc_1_11::XalanTransformer::doTransform(xalanc_1_11::XalanParsedSource const&, xalanc_1_11::XalanCompiledStylesheet const*, xalanc_1_11::XSLTInputSource const*, xalanc_1_11::XSLTResultTarget const&) ()
      #12 0x0000000100ece2ad in xalanc_1_11::XalanTransformer::transform(xalanc_1_11::XSLTInputSource const&, xalanc_1_11::XSLTInputSource const&, xalanc_1_11::XSLTResultTarget const&) ()

      And error:
      malloc: *** error for object 0x103831c08: incorrect checksum for freed object - object was probably modified after being freed.

          • set a breakpoint in malloc_error_break to debug

      NOTE: Surprisingly the code executes on OSX 10.14 without any issue

        Attachments

          Activity

            People

            • Assignee:
              ggregory Gary D. Gregory
              Reporter:
              Pratik Pratik Singh Bisht
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: