Title: xcercesc 2.3 threading issues

Hi,

I seem to have threading issues with xercesc 2.3 on solaris 2.8.  Any thoughts?  Typically I'll see crashes that look like:

#0  0xfe441c98 in _smalloc () from /usr/lib/libc.so.1
(gdb) where
#0  0xfe441c98 in _smalloc () from /usr/lib/libc.so.1
#1  0xfe441ce0 in malloc () from /usr/lib/libc.so.1
#2  0xfe5951c0 in ?? () at dyn-string.c:70 from /opt/vps/gcc/lib/libstdc++.so.5
#3  0xfecfd688 in _ZN11xercesc_2_317MemoryManagerImpl8allocateEj ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#4  0xfeccf12c in _ZN11xercesc_2_310DTDScanner15scanDefaultDeclERNS_9DTDAttDefE
    () from /opt/vps/lib/libxerces-c-gcc.so.23
#5  0xfeccce34 in _ZN11xercesc_2_310DTDScanner10scanAttDefERNS_14DTDElementDeclERNS_9XMLBufferE () from /opt/vps/lib/libxerces-c-gcc.so.23

#6  0xfeccd4d4 in _ZN11xercesc_2_310DTDScanner15scanAttListDeclEv ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#7  0xfecd1d64 in _ZN11xercesc_2_310DTDScanner14scanMarkupDeclEb ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#8  0xfecd0f18 in _ZN11xercesc_2_310DTDScanner17scanExtSubsetDeclEbb ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#9  0xfecef900 in _ZN11xercesc_2_312IGXMLScanner15scanDocTypeDeclEv ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#10 0xfed77ca4 in _ZN11xercesc_2_310XMLScanner10scanPrologEv ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#11 0xfeced1a4 in _ZN11xercesc_2_312IGXMLScanner12scanDocumentERKNS_11InputSourceE () from /opt/vps/lib/libxerces-c-gcc.so.23

#12 0xfec78c1c in _ZN11xercesc_2_317AbstractDOMParser5parseERKNS_11InputSourceE
    () from /opt/vps/lib/libxerces-c-gcc.so.23
---Type <return> to continue, or q <return> to quit---
#13 0xfed42e00 in _ZN11xercesc_2_314TraverseSchema16preprocessImportEPKNS_10DOMElementE () from /opt/vps/lib/libxerces-c-gcc.so.23

#14 0xfed4c5ec in _ZN11xercesc_2_314TraverseSchema18preprocessChildrenEPKNS_10DOMElementE () from /opt/vps/lib/libxerces-c-gcc.so.23

#15 0xfed42a2c in _ZN11xercesc_2_314TraverseSchema17preprocessIncludeEPKNS_10DOMElementE () from /opt/vps/lib/libxerces-c-gcc.so.23

#16 0xfed4c5c8 in _ZN11xercesc_2_314TraverseSchema18preprocessChildrenEPKNS_10DOMElementE () from /opt/vps/lib/libxerces-c-gcc.so.23

#17 0xfed42304 in _ZN11xercesc_2_314TraverseSchema16preprocessSchemaEPNS_10DOMElementEPKt () from /opt/vps/lib/libxerces-c-gcc.so.23

#18 0xfed41c18 in _ZN11xercesc_2_314TraverseSchemaC1EPNS_10DOMElementEPNS_13XMLStringPoolEPNS_13SchemaGrammarEPNS_15GrammarResolverEPNS_10XMLScannerEPKtPNS_16XMLEntityHandlerEPNS_16XMLErrorReporterEPNS_13MemoryManagerE ()

   from /opt/vps/lib/libxerces-c-gcc.so.23
#19 0xfecf5e90 in _ZN11xercesc_2_312IGXMLScanner20loadXMLSchemaGrammarERKNS_11InputSourceEb () from /opt/vps/lib/libxerces-c-gcc.so.23

#20 0xfecf1f30 in _ZN11xercesc_2_312IGXMLScanner11loadGrammarERKNS_11InputSourceEsb () from /opt/vps/lib/libxerces-c-gcc.so.23

#21 0xfed78e44 in _ZN11xercesc_2_310XMLScanner11loadGrammarEPKtsb ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#22 0xfed24b58 in _ZN11xercesc_2_317SAX2XMLReaderImpl11loadGrammarEPKtsb ()
   from /opt/vps/lib/libxerces-c-gcc.so.23
#23 0xff0e9210 in _ZN14DocumentParser13FetchDocumentEPKwRK12VXIMapHolderP16VXIin---Type <return> to continue, or q <return> to quit---

etInterfaceP17VXIcacheInterfaceR12SimpleLoggerR12VXMLDocumentRS2_bPPhPmbP17VXIdebugInterface (this=<incomplete type>, url="" [EMAIL PROTECTED],

    inet=0x2a9ae8, cache=0xfb90909c, [EMAIL PROTECTED], [EMAIL PROTECTED],
    [EMAIL PROTECTED], isDefaults=0, content=0xfb90909c,
    size=0xfb909098, isRoot=0, debug=0x24eb48) at XMLChConverter.hpp:110
#24 0xff120c64 in _ZN3VXI19AttemptDocumentLoadERKSbIwSt11char_traitsIwESaIwEERK12VXIMapHolderR12VXMLDocumentRS6_bb (this=<incomplete type>, [EMAIL PROTECTED],

    [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED],
    isDefaults=148, isRoot=false)
    at /usr/local/gcc/include/c++/3.2/bits/basic_string.h:781
#25 0xff11d7c8 in _ZN3VXI17PerformTransitionERK11VXMLElementRKSbIwSt11char_traitsIwESaIwEEP6VXIMapbb (this=<incomplete type>, [EMAIL PROTECTED], [EMAIL PROTECTED],

    rawSubmitData=0xfb909478, isSubdialog=false, isSubmitElement=false)
    at VXI.cpp:953
#26 0xff11a7ec in _ZN3VXI15RunDocumentLoopERKSbIwSt11char_traitsIwESaIwEES5_PP8VXIValue (this=<incomplete type>, [EMAIL PROTECTED],

    [EMAIL PROTECTED], resultValue=0xfb909ba4) at VXI.cpp:669
#27 0xff119e84 in _ZN3VXI3RunEPKwS1_P12SimpleLoggerP16VXIinetInterfaceP17VXIcacheInterfaceP15VXIjsiInterfaceP15VXIrecInterfaceP18VXIpromptInterfaceP15VXItelInterfaceP18VXIobjectInterfaceP17VXIdebugInterfacePP8VXIValue (

    this=<incomplete type>, initialDocument=0xd81d68,
    sessionScript=0xfb9095e0, resourceLog=0xfb9095f8, resourceInet=0x6cc,
    resourceCache=0x94, resourceJsi=0x2bd1f8, resourceRec=0x2afe00,
---Type <return> to continue, or q <return> to quit---
    resourcePrompt=0x2a9a38, resourceTel=0x271818, resourceObject=0x2c7d70,
    resourceDebug=0x24eb48, resultValue=0xfb909ba4)
    at /usr/local/gcc/include/c++/3.2/bits/stl_alloc.h:633
#28 0xff14b540 in VXIinterpreterRun (x=0x2c8c78, name=0xd81d68,
    sessionArgs=0xfb9095e0, result=0xfb909ba4) at VXI_api.cpp:125
#29 0x46bf0 in _ZN11Interpreter15ProcessDocumentEPKwS1_P10InterpCh_tPP8VXIValue
    (this=<incomplete type>, url="" sess_scr=0xd822a0,
    interp_ch=0x295010, documentResult=0xfb909ba4)
    at OSBplatform/intthr/Interpreter.cpp:1087
#30 0x4bdfc in _ZN8VxiMpsCh12ProcessCallsEv (this=<incomplete type>)
    at OSBplatform/intthr/VxiMpsCh.cpp:672
#31 0x4c998 in ch_thread_entry (arg=0x265e70)
    at OSBplatform/intthr/VxiMpsChThreads.cpp:368
#32 0xfef4b2dc in thread_wrapper () from /opt/vps/PERIfw/lib/libperifw.so.1
#33 0xfef4b33c in pfw_posix_wrapper () from /opt/vps/PERIfw/lib/libperifw.so.1
(gdb)

I'm unable to reproduce the problem under purify, but during one run purify turned up the following FMM:

> ****  Purify instrumented
> /opt/home/jmuller/sandbox/vxml-osb3ga/mps/vxmli/vxmli
> (pid 14226)  ****
> FMW: Free memory write:
>   * This is occurring while in thread 69:
>      
> xercesc_2_3::UnicodeRangeFactory::initializeKeywordMap() [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::TokenFactory::initializeRegistry()
> [libxerces-c-gcc.so.23]
>       xercesc_2_3::TokenFactory::getRange(unsigned short
> const*, bool)
> [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::ParserForXMLSchema::getTokenForShorthand(int)
> [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::ParserForXMLSchema::processBacksolidus_c()
> [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::RegxParser::parseAtom() [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseFactor() [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseTerm(bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseRegx(bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parse(unsigned short const*,
> int) [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::RegularExpression::setPattern(unsigned
> short const*,
> unsigned short const*) [libxerces-c-gcc.pso.23]
>      
> xercesc_2_3::RegularExpression::RegularExpression[in-charge](unsigned
> short const*, unsigned short const*,
> xercesc_2_3::MemoryManager*) [libxerces-c-
> gcc.so.23]
>      
> xercesc_2_3::AbstractStringValidator::checkContent(unsigned short
> const*, bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::AbstractStringValidator::validate(unsigned
> short const*)
> [libxerces-c-gcc.so.23]
>       xercesc_2_3::ListDatatypeValidator::checkContent
> (xercesc_2_3::BaseRefVectorOf<unsigned short>*, unsigned
> short const*, bool)
> [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::ListDatatypeValidator::checkContent(unsigned
> short const*,
> bool) [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::AbstractStringValidator::inspectFacetBase() [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::ListDatatypeValidator::inspectFacetBase()
> [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::AbstractStringValidator::init
> (xercesc_2_3::RefArrayVectorOf<unsigned short>*)
> [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::ListDatatypeValidator::ListDatatypeValidator[in-charge]
> (xercesc_2_3::DatatypeValidator*,
> xercesc_2_3::RefHashTableOf<xercesc_2_3::KVStringPair>*,
> xercesc_2_3::RefArrayVectorOf<unsigned short>*, int,
> xercesc_2_3::MemoryManager*) [libxerces-c-gcc.so.23]
>   * Writing 1 byte to 0x13bc96d in the heap.
>   * Address 0x13bc96d is 13 bytes into a freed  block at
> 0x13bc960 of 16 bytes.
>   * This block was allocated from thread 69:
>       malloc         [rtlib.o]
>       operator new(unsigned) [new_op.cc:48]
>       xercesc_2_3::MemoryManagerImpl::allocate(unsigned) [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::XMemory::operator new(unsigned)
> [libxerces-c-gcc.so.23]
>       xercesc_2_3::TokenFactory::initializeRegistry()
> [libxerces-c-gcc.so.23]
>       xercesc_2_3::TokenFactory::getRange(unsigned short
> const*, bool)
> [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::ParserForXMLSchema::getTokenForShorthand(int)
> [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::ParserForXMLSchema::processBacksolidus_c()
> [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::RegxParser::parseAtom() [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseFactor() [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseTerm(bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseRegx(bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parse(unsigned short const*,
> int) [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::RegularExpression::setPattern(unsigned
> short const*,
> unsigned short const*) [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::RegularExpression::RegularExpression[in-charge](unsigned
> short const*, unsigned short const*,
> xercesc_2_3::MemoryManager*) [libxerces-c-
> gcc.so.23]
>      
> xercesc_2_3::AbstractStringValidator::checkContent(unsigned short
> const*, bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::AbstractStringValidator::validate(unsigned
> short const*)
> [libxerces-c-gcc.so.23]
>       xercesc_2_3::ListDatatypeValidator::checkContent
> (xercesc_2_3::BaseRefVectorOf<unsigned short>*, unsigned
> short const*, bool)
> [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::ListDatatypeValidator::checkContent(unsigned
> short const*,
> bool) [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::AbstractStringValidator::inspectFacetBase() [libxerces-c-
> gcc.so.23]
>   * There have been 39 frees since this block was freed from
> thread 48:
>       free           [rtlib.o]
>       operator delete(void*) [del_op.cc:39]
>       xercesc_2_3::MemoryManagerImpl::deallocate(void*) [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::XMemory::operator delete(void*)
> [libxerces-c-gcc.so.23]
>       xercesc_2_3::UnicodeRangeFactory::~UnicodeRangeFactory
> [in-charge
> deleting]() [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::RefHashTableOf<xercesc_2_3::RangeFactory>::put(void*,
> xercesc_2_3::RangeFactory*) [libxerces-c-gcc.so.23]
>       xercesc_2_3::RangeTokenMap::addRangeMap(unsigned short const*,
> xercesc_2_3::RangeFactory*) [libxerces-c-gcc.so.23]
>       xercesc_2_3::TokenFactory::initializeRegistry()
> [libxerces-c-gcc.so.23]
>       xercesc_2_3::TokenFactory::getRange(unsigned short
> const*, bool)
> [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::ParserForXMLSchema::getTokenForShorthand(int)
> [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::ParserForXMLSchema::processBacksolidus_c()
> [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::RegxParser::parseAtom() [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseFactor() [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseTerm(bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parseRegx(bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::RegxParser::parse(unsigned short const*,
> int) [libxerces-c-
> gcc.so.23]
>       xercesc_2_3::RegularExpression::setPattern(unsigned
> short const*,
> unsigned short const*) [libxerces-c-gcc.so.23]
>      
> xercesc_2_3::RegularExpression::RegularExpression[in-charge](unsigned
> short const*, unsigned short const*,
> xercesc_2_3::MemoryManager*) [libxerces-c-
> gcc.so.23]
>      
> xercesc_2_3::AbstractStringValidator::checkContent(unsigned short
> const*, bool) [libxerces-c-gcc.so.23]
>       xercesc_2_3::AbstractStringValidator::validate(unsigned
> short const*)
> [libxerces-c-gcc.so.23]
>



Any thoughts?

thanks jsm

Reply via email to