atom feed5 messages in net.sourceforge.lists.saxon-helpRe: [saxon] HashMap.put infinite loop?
FromSent OnAttachments
Felix SiglreithmaierJun 30, 2010 8:35 am 
Michael KayJun 30, 2010 9:29 am 
Felix SiglreithmaierJul 1, 2010 1:56 am 
Michael KayJul 1, 2010 3:46 am 
Felix SiglreithmaierJul 2, 2010 4:48 am 
Subject:Re: [saxon] HashMap.put infinite loop?
From:Michael Kay (mi@saxonica.com)
Date:Jun 30, 2010 9:29:09 am
List:net.sourceforge.lists.saxon-help

You're in net.sf.saxon.Controller, which is Saxon's implementation of the JAXP Transformer class: more specifically you're in a HashMap which is owned exclusively by that Controller. I wonder if it's possible that you're using the Transformer in more than one thread? That's the only explanation I can think of.

On 30/06/2010 16:35, Felix Siglreithmaier wrote:

Hi,

under very high load it seems that Saxon ends in an infinite loop. We are using Saxon PE 9.2.0.6 PE for Java.

After firing millions of requests to Tomcat with Apache JMeter i can reproduce it sometimes. (full CPU load and LamdaProbe shows two open connections at jk-8009 with Status Service). the only solution is a tomcat restart.

I was able to find this two open Connections in JConsole and allocated them to threads.

This two threads have the same StackTrace:

Name: TP-Processor39 State: RUNNABLE Total blocked: 93 Total waited: 3

Stack trace: java.util.HashMap.put(HashMap.java:374) net.sf.saxon.instruct.GlobalParameterSet.put(GlobalParameterSet.java:45) net.sf.saxon.Controller.setParameter(Controller.java:2161) jart.processhandlers.transformToOutput.handleProcess(transformToOutput.java:126) jart.JArtRequest.doFilter(JArtRequest.java:191) jart.JArtFilter.doFilter(JArtFilter.java:145) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) java.lang.Thread.run(Thread.java:619)

any ideas???

we are looking for this bug for months now and we think that Saxon is the problem, because formerly we used Xalan for years and never had such a problem with CPUs staying in full load.