Mantis - Resin
Viewing Issue Advanced Details
3423 minor always 03-27-09 07:11 05-07-09 13:16
ferg  
ferg  
normal  
closed 3.1.8  
fixed  
none    
none 4.0.1  
0003423: ClassEntry/SystemClassLoader deadlock
I've occassionally found a thread deadlock in a halted instance of Resin-3.1.8.
I've appended the jstack trace.

Xalan XSLTC does employ some aggressive classloading, since it's a XSLT-to-java compiler.
It seems that it would occassionally (I don't remember this happening often) cause resin's
classloader to fail.

Looks like thread http--8123-29 and thread http--8123-33 are deadlocked in the classloader code,

Found one Java-level deadlock:
=============================
"http--8123-120$22712691":
 waiting to lock monitor 0x08b126ac (object 0x5828b390, a ru.sbtc.util.StylesheetManager),
 which is held by "http--8123-25$8931423"
"http--8123-25$8931423":
 waiting to lock monitor 0x08b0b5e0 (object 0x5525c6b0, a com.caucho.loader.SystemClassLoader),
 which is held by "http--8123-33$15917864"
"http--8123-33$15917864":
 waiting to lock monitor 0x089d2be0 (object 0x5d3fea48, a com.caucho.loader.ClassEntry),
 which is held by "http--8123-29$31079116"
"http--8123-29$31079116":
 waiting to lock monitor 0x08b0b5e0 (object 0x5525c6b0, a com.caucho.loader.SystemClassLoader),
 which is held by "http--8123-33$15917864"

Java stack information for the threads listed above:
===================================================
"http--8123-120$22712691":
       at ru.sbtc.util.StylesheetManager.getTransformer(StylesheetManager.java:139)
       - waiting to lock <0x5828b390> (a ru.sbtc.util.StylesheetManager)
       at ru.sbtc.sitebuilder.servlet.XMLMenuServlet.doGet(XMLMenuServlet.java:84)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
...
"http--8123-25$8931423":
       at org.apache.xalan.xsltc.compiler.XPathLexer.<init>(XPathLexer.java:165)
       at org.apache.xalan.xsltc.compiler.Parser.parseTopLevel(Parser.java:1092)
       at org.apache.xalan.xsltc.compiler.Parser.parseExpression(Parser.java:1055)
       at org.apache.xalan.xsltc.compiler.If.parseContents(If.java:61)
       at org.apache.xalan.xsltc.compiler.SyntaxTreeNode.parseChildren(SyntaxTreeNode.java:432)
       at org.apache.xalan.xsltc.compiler.VariableBase.parseContents(VariableBase.java:229)
       at org.apache.xalan.xsltc.compiler.Variable.parseContents(Variable.java:53)
       at org.apache.xalan.xsltc.compiler.Stylesheet.parseOwnChildren(Stylesheet.java:577)
       at org.apache.xalan.xsltc.compiler.Stylesheet.parseContents(Stylesheet.java:559)
       at org.apache.xalan.xsltc.compiler.Parser.createAST(Parser.java:383)
       at org.apache.xalan.xsltc.compiler.XSLTC.compile(XSLTC.java:361)
       at org.apache.xalan.xsltc.compiler.XSLTC.compile(XSLTC.java:446)
       at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:799)
       at ru.sbtc.util.StylesheetManager.loadTemplates(StylesheetManager.java:174)
       at ru.sbtc.util.StylesheetManager.getTransformer(StylesheetManager.java:161)
       - locked <0x5828b390> (a ru.sbtc.util.StylesheetManager)
       at ru.sbtc.sitebuilder.servlet.XMLMenuServlet.doGet(XMLMenuServlet.java:84)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
...
"http--8123-33$15917864":
       at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1431)
       - waiting to lock <0x5d3fea48> (a com.caucho.loader.ClassEntry)
       at com.caucho.loader.DynamicClassLoader.findClassImpl(DynamicClassLoader.java:1390)
       at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1289)
       at com.caucho.loader.SystemClassLoader.loadClassImpl(SystemClassLoader.java:217)
       at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1219)
       at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1203)
       at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
       - locked <0x5525c6b0> (a com.caucho.loader.SystemClassLoader)
       at org.apache.xalan.xsltc.compiler.Stylesheet.setImportPrecedence(Stylesheet.java:324)
       at org.apache.xalan.xsltc.compiler.Import.parseContents(Import.java:115)
       at org.apache.xalan.xsltc.compiler.Stylesheet.parseOwnChildren(Stylesheet.java:587)
       at org.apache.xalan.xsltc.compiler.Stylesheet.parseContents(Stylesheet.java:559)
       at org.apache.xalan.xsltc.compiler.Parser.createAST(Parser.java:383)
       at org.apache.xalan.xsltc.compiler.XSLTC.compile(XSLTC.java:361)
       at org.apache.xalan.xsltc.compiler.XSLTC.compile(XSLTC.java:446)
       at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:799)
       at ru.sbtc.util.StylesheetManager.loadTemplates(StylesheetManager.java:174)
       at ru.sbtc.util.StylesheetManager.getTransformer(StylesheetManager.java:161)
       - locked <0x57067f10> (a ru.sbtc.util.StylesheetManager)
       at ru.sbtc.sitebuilder.servlet.XMLServlet.doGet(XMLServlet.java:193)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
...
"http--8123-29$31079116":
       at java.lang.ClassLoader.defineClass1(Native Method)
       at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
       at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
       at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1523)
       - locked <0x5d3fea48> (a com.caucho.loader.ClassEntry)
       at com.caucho.loader.DynamicClassLoader.findClassImpl(DynamicClassLoader.java:1390)
       at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1289)
       at com.caucho.loader.SystemClassLoader.loadClassImpl(SystemClassLoader.java:217)
       at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1279)
       at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1279)
       at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1279)
       at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1219)
       at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1203)
       at org.apache.xalan.xsltc.compiler.ObjectFactory.findProviderClass(ObjectFactory.java:508)
       at org.apache.xalan.xsltc.compiler.Parser.makeInstance(Parser.java:919)
       at org.apache.xalan.xsltc.compiler.Parser.startElement(Parser.java:1243)
       at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
       at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
       at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
       at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
       at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
       at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
       at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
       at org.apache.xalan.xsltc.compiler.Parser.parse(Parser.java:415)
       at org.apache.xalan.xsltc.compiler.Parser.parse(Parser.java:467)
       at org.apache.xalan.xsltc.compiler.Import.parseContents(Import.java:99)
       at org.apache.xalan.xsltc.compiler.Stylesheet.parseOwnChildren(Stylesheet.java:587)
       at org.apache.xalan.xsltc.compiler.Stylesheet.parseContents(Stylesheet.java:559)
       at org.apache.xalan.xsltc.compiler.Parser.createAST(Parser.java:383)
       at org.apache.xalan.xsltc.compiler.XSLTC.compile(XSLTC.java:361)
       at org.apache.xalan.xsltc.compiler.XSLTC.compile(XSLTC.java:446)
       at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:799)
       at ru.sbtc.util.StylesheetManager.loadTemplates(StylesheetManager.java:174)
       at ru.sbtc.util.StylesheetManager.getTransformer(StylesheetManager.java:161)
       - locked <0x5600ca80> (a ru.sbtc.util.StylesheetManager)
       at ru.sbtc.sitebuilder.InfoBlock.output(InfoBlock.java:2025)
       at ru.sbtc.sitebuilder.SectionToXML.process(SectionToXML.java:332)
       at ru.sbtc.sitebuilder.servlet.XMLServlet.doGet(XMLServlet.java:214)
...

Found 1 deadlock.


Notes
(0003943)
stbu   
03-27-09 12:42   
Scott,
could this be related to the deadlock issue during JSP Precompile that I've reported at bug 3220 http://bugs.caucho.com/view.php?id=3220 [^]