WebLogic Server JSPC: WLS Javelin Worker Threads Hanging (Doc ID 1084908.1)

Last updated on OCTOBER 11, 2011

Applies to:

Oracle Weblogic Server - Version: 10.3 and later   [Release: and later ]
Information in this document applies to any platform.

Symptoms

Using jspc to precompile all the JSPs in an automated build environment works fine on a single CPU machine but hangs on a multiple CPU machine.  Jspc hanging is not consistent but is quite common (say once every 20 builds).

Attached thread dump of the jspc process running on a four cpu machine shows that there are four threads running, all waiting on the same lock indefinitely. Also note that there is nothing common among the four JSPs.

"Javelin Worker-3-adhocqueryview.jsp" daemon prio=2 tid=0x27c76c20 nid=0xdd0 in Object.wait() [0x271ee000..0x271efbec]
  at java.lang.Object.wait(Native Method)
  - waiting on <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at java.lang.Object.wait(Object.java:474)
  at javelin.ResolveLock.lockOrReturnType(ResolveLock.java:56)
  - locked <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at javelin.java.JavaResolver.resolve(JavaResolver.java:65)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:247)
  at javelin.java.JavaScope.resolveToPhase(JavaScope.java:2510)
  at javelin.java.JavaScope.checkEntity(JavaScope.java:2420)
  at javelin.java.JavaScope._resolve(JavaScope.java:2103)
  at javelin.java.JavaScope.resolve(JavaScope.java:1454)
  at javelin.java.JavaScope.resolveType(JavaScope.java:1222)
  at javelin.java.JavaClassResolver.resolveType(JavaClassResolver.java:944)
  at javelin.java.JavaClassResolver.resolveType(JavaClassResolver.java:932)
  at javelin.java.JavaClassResolver.getParamTypes(JavaClassResolver.java:980)
  at javelin.java.JavaClassResolver.resolveMemberMethods(JavaClassResolver.java:443)
  at javelin.java.JavaResolver.resolveMemberMethods(JavaResolver.java:418)
  at javelin.java.JavaResolver.resolve(JavaResolver.java:103)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:247)
  at javelin.java.JavaResolver.resolveFull(JavaResolver.java:1121)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:254)
  at javelin.CPL.getClassFromType(CPL.java:1157)
  at javelin.CPL.getResolvedClass(CPL.java:1102)
  at javelin.ProxySourceFile$ProxyEnv.getTypeDeclaration(ProxySourceFile.java:802)
  at javelin.jsp.JspLibrary.getClassInfo(JspLibrary.java:1260)
  at javelin.jsp.JspScriptTransform$TransformContext.resolveType(JspScriptTransform.java:2150)
  at javelin.jsp.JspJavaTransform.getIMethod(JspJavaTransform.java:2299)
  at javelin.jsp.JspJavaTransform.addELFunctionMapper(JspJavaTransform.java:2150)
  at javelin.jsp.JspJavaTransform.addAfterDeclarations(JspJavaTransform.java:1984)
  at javelin.jsp.JspScriptTransform.transformPage(JspScriptTransform.java:179)
  at javelin.jsp.JspScriptTransform.<init>(JspScriptTransform.java:156)
  at javelin.jsp.JspCheckContext.check(JspCheckContext.java:89)
  at javelin.jsp.JspAnalyzer.check(JspAnalyzer.java:59)
  at javelin.ProxySourceFile._check(ProxySourceFile.java:152)
  at javelin.SourceFile.masterCheck(SourceFile.java:777)
  - locked <0x05995478> (a java.lang.Object)
  at javelin.SourceFile.check(SourceFile.java:297)
  at javelin.SourceFile.check(SourceFile.java:318)
  at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:222)
  at javelin.SourceFile.codeGen(SourceFile.java:310)
  at javelin.client.ClientUtilsImpl$CodeGenJob.run(ClientUtilsImpl.java:1105)
  at javelin.client.Job.performJob(Job.java:81)
  at javelin.client.ThreadPool$WorkerThread.run(ThreadPool.java:215)

"Javelin Worker-2-searchresult.jsp" daemon prio=2 tid=0x27022e00 nid=0xc4 in Object.wait() [0x271af000..0x271afc6c]
  at java.lang.Object.wait(Native Method)
  - waiting on <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at java.lang.Object.wait(Object.java:474)
  at javelin.ResolveLock.lockOrReturnType(ResolveLock.java:56)
  - locked <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at javelin.java.JavaResolver.resolve(JavaResolver.java:65)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:247)
  at javelin.java.JavaResolver.resolveFull(JavaResolver.java:1121)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:254)
  at javelin.CPL.getClassFromType(CPL.java:1157)
  at javelin.CPL.getResolvedClass(CPL.java:1102)
  at javelin.ProxySourceFile$ProxyEnv.getTypeDeclaration(ProxySourceFile.java:802)
  at javelin.jsp.JspLibrary.getClassInfo(JspLibrary.java:1260)
  at javelin.jsp.JspScriptTransform$TransformContext.resolveType(JspScriptTransform.java:2150)
  at javelin.jsp.JspJavaTransform.getIMethod(JspJavaTransform.java:2299)
  at javelin.jsp.JspJavaTransform.addELFunctionMapper(JspJavaTransform.java:2150)
  at javelin.jsp.JspJavaTransform.addAfterDeclarations(JspJavaTransform.java:1984)
  at javelin.jsp.JspScriptTransform.transformPage(JspScriptTransform.java:179)
  at javelin.jsp.JspScriptTransform.<init>(JspScriptTransform.java:156)
  at javelin.jsp.JspCheckContext.check(JspCheckContext.java:89)
  at javelin.jsp.JspAnalyzer.check(JspAnalyzer.java:59)
  at javelin.ProxySourceFile._check(ProxySourceFile.java:152)
  at javelin.SourceFile.masterCheck(SourceFile.java:777)
  - locked <0x05999068> (a java.lang.Object)
  at javelin.SourceFile.check(SourceFile.java:297)
  at javelin.SourceFile.check(SourceFile.java:318)
  at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:222)
  at javelin.SourceFile.codeGen(SourceFile.java:310)
  at javelin.client.ClientUtilsImpl$CodeGenJob.run(ClientUtilsImpl.java:1105)
  at javelin.client.Job.performJob(Job.java:81)
  at javelin.client.ThreadPool$WorkerThread.run(ThreadPool.java:215)

"Javelin Worker-1-graphicaldatalineageview.jsp" daemon prio=2 tid=0x27022c78 nid=0xde8 in Object.wait() [0x2716f000..0x2716fcec]
  at java.lang.Object.wait(Native Method)
  - waiting on <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at java.lang.Object.wait(Object.java:474)
  at javelin.ResolveLock.lockOrReturnType(ResolveLock.java:56)
  - locked <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at javelin.java.JavaResolver.resolve(JavaResolver.java:65)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:247)
  at javelin.java.JavaResolver.resolveFull(JavaResolver.java:1121)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:254)
  at javelin.CPL.getClassFromType(CPL.java:1157)
  at javelin.CPL.getResolvedClass(CPL.java:1102)
  at javelin.ProxySourceFile$ProxyEnv.getTypeDeclaration(ProxySourceFile.java:802)
  at javelin.jsp.JspLibrary.getClassInfo(JspLibrary.java:1260)
  at javelin.jsp.JspScriptTransform$TransformContext.resolveType(JspScriptTransform.java:2150)
  at javelin.jsp.JspJavaTransform.getIMethod(JspJavaTransform.java:2299)
  at javelin.jsp.JspJavaTransform.addELFunctionMapper(JspJavaTransform.java:2150)
  at javelin.jsp.JspJavaTransform.addAfterDeclarations(JspJavaTransform.java:1984)
  at javelin.jsp.JspScriptTransform.transformPage(JspScriptTransform.java:179)
  at javelin.jsp.JspScriptTransform.<init>(JspScriptTransform.java:156)
  at javelin.jsp.JspCheckContext.check(JspCheckContext.java:89)
  at javelin.jsp.JspAnalyzer.check(JspAnalyzer.java:59)
  at javelin.ProxySourceFile._check(ProxySourceFile.java:152)
  at javelin.SourceFile.masterCheck(SourceFile.java:777)
  - locked <0x059954d8> (a java.lang.Object)
  at javelin.SourceFile.check(SourceFile.java:297)
  at javelin.SourceFile.check(SourceFile.java:318)
  at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:222)
  at javelin.SourceFile.codeGen(SourceFile.java:310)
  at javelin.client.ClientUtilsImpl$CodeGenJob.run(ClientUtilsImpl.java:1105)
  at javelin.client.Job.performJob(Job.java:81)
  at javelin.client.ThreadPool$WorkerThread.run(ThreadPool.java:215)

"Javelin Worker-0-pendingchanges.jsp" daemon prio=2 tid=0x27025618 nid=0x90 in Object.wait() [0x2712f000..0x2712fd6c]
  at java.lang.Object.wait(Native Method)
  - waiting on <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at java.lang.Object.wait(Object.java:474)
  at javelin.ResolveLock.lockOrReturnType(ResolveLock.java:56)
  - locked <0x05f64fa8> (a java.util.concurrent.locks.ReentrantLock)
  at javelin.java.JavaResolver.resolve(JavaResolver.java:65)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:247)
  at javelin.java.JavaResolver.resolveFull(JavaResolver.java:1121)
  at javelin.java.JavaClassFile.resolve(JavaClassFile.java:254)
  at javelin.CPL.getClassFromType(CPL.java:1157)
  at javelin.CPL.getResolvedClass(CPL.java:1102)
  at javelin.ProxySourceFile$ProxyEnv.getTypeDeclaration(ProxySourceFile.java:802)
  at javelin.jsp.JspLibrary.getClassInfo(JspLibrary.java:1260)
  at javelin.jsp.JspScriptTransform$TransformContext.resolveType(JspScriptTransform.java:2150)
  at javelin.jsp.JspJavaTransform.getIMethod(JspJavaTransform.java:2299)
  at javelin.jsp.JspJavaTransform.addELFunctionMapper(JspJavaTransform.java:2150)
  at javelin.jsp.JspJavaTransform.addAfterDeclarations(JspJavaTransform.java:1984)
  at javelin.jsp.JspScriptTransform.transformPage(JspScriptTransform.java:179)
  at javelin.jsp.JspScriptTransform.<init>(JspScriptTransform.java:156)
  at javelin.jsp.JspCheckContext.check(JspCheckContext.java:89)
  at javelin.jsp.JspAnalyzer.check(JspAnalyzer.java:59)
  at javelin.ProxySourceFile._check(ProxySourceFile.java:152)
  at javelin.SourceFile.masterCheck(SourceFile.java:777)
  - locked <0x05995538> (a java.lang.Object)
  at javelin.SourceFile.check(SourceFile.java:297)
  at javelin.SourceFile.check(SourceFile.java:318)
  at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:222)
  at javelin.SourceFile.codeGen(SourceFile.java:310)
  at javelin.client.ClientUtilsImpl$CodeGenJob.run(ClientUtilsImpl.java:1105)
  at javelin.client.Job.performJob(Job.java:81)
  at javelin.client.ThreadPool$WorkerThread.run(ThreadPool.java:215)

Another similar instance that is fixed also by the patch below: 

A random syntax error has been detected when attempting to compile JSP code on a Solaris SPARC 64-bit *sun4v* machine. The failure rate during compilation is around 80%.

This compilation has always finished successfully on Windows, Linux and Solaris SPARC sun4u boxes.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms