At long last I've nailed down a test scenario for the NullPointerException 
after several transformations that reuse a
stylesheet.. The ArrayOutOfBounds may be related and is also in my hunt. 
Because it takes several transformations to
hit, I have not been able to create a simple test case. Good news is I have a 
setup I can trace by inserting debugging
code into the Xalan source.

The NullPointer occurs within a named template at 
org.apache.xpath.objects.XRTreeFrag.xstr(). The member variable m_dtm
is null and m_allowRelease is true. I'm assuming either detach() or destruct() 
was called. It could be a race or some
bad laogic that leads to xstr() being called after detach() or destruct(). But 
I need to confirm the last two calls (I
just figured out a way).

I could use some help understanding how DTMIterator and XRTreeFrag interaction 
with repect to allowRelease. I'm guessing
that I may have come across a DTM implementation backwater. If anybody has some 
ideas, I'd much appreciate them.


============ stack trace ==========================
call: dynamic-link
null(m_dtm): true
m_allowRelease: true
m_dtmRoot: 131174
EXCEPTION:
javax.xml.transform.TransformerException: java.lang.NullPointerException
        at 
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1226)
        at 
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:634)
        at 
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088)
        at 
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066)
        at Example.exampleTransformerReuse(Example.java:87)
        at Example.main(Example.java:72)
---------
java.lang.NullPointerException
        at 
org.apache.xpath.objects.XObject.dispatchCharactersEvents(XObject.java:187)
        at 
org.apache.xpath.Expression.executeCharsToContentHandler(Expression.java:303)
        at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:200)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432)
        at 
org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:280)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
        at 
org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:438)
        at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:299)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
        at 
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422)
        at 
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226)
        at 
org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:438)
        at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:299)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
        at 
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422)
        at 
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2281)
        at 
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2107)
        at 
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1171)
        at 
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:634)
        at 
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088)
        at 
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066)
        at Example.exampleTransformerReuse(Example.java:87)
        at Example.main(Example.java:72)


Reply via email to