You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Stan <sy...@oblix.com> on 2001/05/17 02:19:59 UTC

Running multiple threads in Solaris (was Re: Running threadsafe example on Win32 VC++ 6.0)

Hi,

    This code update worked for me on Win32. However, this seems to still
happen on Solaris. Does anyone have any clues ? Thanks!

-Stan

David_N_Bertoni@lotus.com wrote:

> Yup, this is a bug that was fixed a while back.  I thought it went into the
> 1.1 release, but it looks like it didn't.
>
> You can update the following two files to the specified revision.  The
> changes should be compatible with what you have.
>
> xml-xalan/c/src/XPath/XObjectFactoryDefault.cpp (1.21)
> xml-xalan/c/src/XPath/XObjectFactoryDefault.hpp (1.20)
>
> Dave
>
>
>                     Stan
>                     <syuen@oblix.        To:     xalan-dev@xml.apache.org
>                     com>                 cc:     (bcc: David N Bertoni/CAM/Lotus)
>                                          Subject:     Re: Running threadsafe example on Win32 VC++ 6.0
>                     05/04/2001
>                     08:07 PM
>                     Please
>                     respond to
>                     xalan-dev
>
>
>
> Hi,
>
>     Has anyone else gotten problems running the threadsafe example from the
> Xalan C++ 1.1 release
> on VC++ 6.0 in the debug build ? I am concerned that separating the
> processing
> of the stylesheet into
> the StylesheetRoot object and the processor process () call are not thread
> safe. This is the assert that
> I am getting which is similar to the assert that I get in my own
> implementation. This problem does not
> happen if the processor's process call is locked.
>
>     Thanks,
>
> -Stan
>
> _NMSG_WRITE(int 0x0000000a) line 221
> abort() line 44 + 7 bytes
> _assert(void * 0x002f0398, void * 0x002f0340, unsigned int 0x0000006a) line
> 267
>
> XalanReferenceCountedObject::removeReference(XalanReferenceCountedObject *
> 0x004d8630 theFalseBoolean) line 106 + 29 bytes
> XObjectPtr::~XObjectPtr() line 417 + 14 bytes
> ElemChoose::execute(StylesheetExecutionContext & {...}, XalanNode *
> 0x00bb20b0,
> XalanNode * 0x00ef8cec, const QName & {...}) line 163 + 18 bytes
> ElemTemplateElement::executeChildren(StylesheetExecutionContext & {...},
> XalanNode * 0x00bb20b0, XalanNode * 0x00ef8cec, const QName & {...}) line
> 289 +
> 32 bytes
> ElemTemplateElement::transformChild(StylesheetExecutionContext & {...},
> const
> Stylesheet & {...}, const ElemTemplateElement * 0x00ba8840, const
> ElemTemplateElement * 0x00bab2b0, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8c68, XalanNode * 0x00ef8cec, const QName & {...}, int 0x00000032)
> line
> 988
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8c68, const QName & {...}, int 0x00000032, const NodeRefListBase &
> {...},
> unsigned int 0x0000001b) line 869
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8c68, const QName & {...}, int 0x00000032, int 0x0000000d, const
> std::vector<NodeSortKey,std::allocator<NodeSortKey> > & {...}, ...) line
> 780
> ElemTemplateElement::transformSelectedChildren(StylesheetExecutionContext &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8c68, const QName & {...}, const XPath * 0x00ba83b0, int 0x00000032,
> int
> 0x0000000d) line 686
> ElemApplyTemplates::execute(StylesheetExecutionContext & {...}, XalanNode *
> 0x00bb20b0, XalanNode * 0x00ef8c68, const QName & {...}) line 176
> ElemTemplateElement::executeChildren(StylesheetExecutionContext & {...},
> XalanNode * 0x00bb20b0, XalanNode * 0x00ef8c68, const QName & {...}) line
> 289 +
> 32 bytes
> ElemTemplateElement::transformChild(StylesheetExecutionContext & {...},
> const
> Stylesheet & {...}, const ElemTemplateElement * 0x00ba5cc0, const
> ElemTemplateElement * 0x00ba6220, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8504, XalanNode * 0x00ef8c68, const QName & {...}, int 0x00000032)
> line
> 988
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8504, const QName & {...}, int 0x00000032, const NodeRefListBase &
> {...},
> unsigned int 0x00000003) line 869
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8504, const QName & {...}, int 0x00000032, int 0x0000000a, const
> std::vector<NodeSortKey,std::allocator<NodeSortKey> > & {...}, ...) line
> 780
> ElemTemplateElement::transformSelectedChildren(StylesheetExecutionContext &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8504, const QName & {...}, const XPath * 0x00ba5270, int 0x00000032,
> int
> 0x0000000a) line 686
> ElemApplyTemplates::execute(StylesheetExecutionContext & {...}, XalanNode *
> 0x00bb20b0, XalanNode * 0x00ef8504, const QName & {...}) line 176
> ElemTemplateElement::executeChildren(StylesheetExecutionContext & {...},
> XalanNode * 0x00bb20b0, XalanNode * 0x00ef8504, const QName & {...}) line
> 289 +
> 32 bytes
> ElemTemplateElement::transformChild(StylesheetExecutionContext & {...},
> const
> Stylesheet & {...}, const ElemTemplateElement * 0x00ba20c0, const
> ElemTemplateElement * 0x00ba33c0, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8060, XalanNode * 0x00ef8504, const QName & {...}, int 0x00000032)
> line
> 988
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8060, const QName & {...}, int 0x00000032, const NodeRefListBase &
> {...},
> unsigned int 0x00000005) line 869
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8060, const QName & {...}, int 0x00000032, int 0x00000007, const
> std::vector<NodeSortKey,std::allocator<NodeSortKey> > & {...}, ...) line
> 780
> ElemTemplateElement::transformSelectedChildren(StylesheetExecutionContext &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00ef8060, const QName & {...}, const XPath * 0x00ba3c30, int 0x00000032,
> int
> 0x00000007) line 686
> ElemApplyTemplates::execute(StylesheetExecutionContext & {...}, XalanNode *
> 0x00bb20b0, XalanNode * 0x00ef8060, const QName & {...}) line 176
> ElemTemplateElement::executeChildren(StylesheetExecutionContext & {...},
> XalanNode * 0x00bb20b0, XalanNode * 0x00ef8060, const QName & {...}) line
> 289 +
> 32 bytes
> ElemLiteralResult::execute(StylesheetExecutionContext & {...}, XalanNode *
> 0x00bb20b0, XalanNode * 0x00ef8060, const QName & {...}) line 251
> ElemTemplateElement::executeChildren(StylesheetExecutionContext & {...},
> XalanNode * 0x00bb20b0, XalanNode * 0x00ef8060, const QName & {...}) line
> 289 +
> 32 bytes
> ElemTemplateElement::transformChild(StylesheetExecutionContext & {...},
> const
> Stylesheet & {...}, const ElemTemplateElement * 0x00b9f930, const
> ElemTemplateElement * 0x00ba1790, XalanNode * 0x00bb20b0, XalanNode *
> 0x00bb20b0, XalanNode * 0x00ef8060, const QName & {...}, int 0x00000032)
> line
> 988
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00bb20b0, const QName & {...}, int 0x00000032, const NodeRefListBase &
> {...},
> unsigned int 0x00000001) line 869
> ElemTemplateElement::doTransformSelectedChildren(StylesheetExecutionContext
> &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00bb20b0, const QName & {...}, int 0x00000032, int 0x00000003, const
> std::vector<NodeSortKey,std::allocator<NodeSortKey> > & {...}, ...) line
> 780
> ElemTemplateElement::transformSelectedChildren(StylesheetExecutionContext &
> {...}, const Stylesheet & {...}, const ElemTemplateElement & {...}, const
> ElemTemplateElement * 0x00000000, XalanNode * 0x00bb20b0, XalanNode *
> 0x00bb20b0, const QName & {...}, const XPath * 0x00b9f4a0, int 0x00000032,
> int
> 0x00000003) line 686
> ElemApplyTemplates::execute(StylesheetExecutionContext & {...}, XalanNode *
> 0x00bb20b0, XalanNode * 0x00bb20b0, const QName & {...}) line 190
> ElemTemplateElement::executeChildren(StylesheetExecutionContext & {...},
> XalanNode * 0x00bb20b0, XalanNode * 0x00bb20b0, const QName & {...}) line
> 289 +
> 32 bytes
> ElemTemplate::execute(StylesheetExecutionContext & {...}, XalanNode *
> 0x00bb20b0, XalanNode * 0x00bb20b0, const QName & {...}) line 171
> StylesheetRoot::process(XalanNode * 0x00bb20b0, XSLTResultTarget & {...},
> StylesheetExecutionContext & {...}) line 229 + 78 bytes
> XSLTEngineImpl::process(const XSLTInputSource & {...}, XSLTResultTarget &
> {...}, StylesheetExecutionContext & {...}) line 445
> theThread(void * 0x00000003) line 122 + 35 bytes
> KERNEL32! 77f04ede()

--
Stan Yuen (syuen@oblix.com)     Software Engineer

18922 Forge Drive
Cupertino, CA 95014             Ph: (408) 861-6882