[jira] [Closed] (JCI-53) Stack overflow on cross imports in commons-jci-janino

2013-10-14 Thread Emmanuel Bourg (JIRA)

 [ 
https://issues.apache.org/jira/browse/JCI-53?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emmanuel Bourg closed JCI-53.
-


 Stack overflow on cross imports in commons-jci-janino
 -

 Key: JCI-53
 URL: https://issues.apache.org/jira/browse/JCI-53
 Project: Commons JCI
  Issue Type: Bug
  Components: compiler janino
Affects Versions: 1.0
Reporter: Edson Tirelli
Assignee: Torsten Curdt
Priority: Blocker
 Fix For: 1.1


 A stack overflow occurs when trying to compile classes with cross references 
 using commons-jci-janino, because an infinite recursion. The simple presence 
 of cross reference import is enough to cause the problem.
 Example: the following classes will recreate the problem:
 {code}
 package test;
 import static test.Func2.func2;
 public class Func1 {
public static boolean func1() throws Exception {
return true;
}
 }
 {code}
 {code}
 package test;
 import static test.Func1.func1;
 public class Func2 {
public static boolean func2() throws Exception {
return true;
}
 } 
 {code}
 The exception stack is:
 {code}
 java.lang.StackOverflowError
   at org.codehaus.janino.Parser.parseAndExpression(Parser.java)
   at org.codehaus.janino.Parser.parseExclusiveOrExpression(Parser.java)
   at org.codehaus.janino.Parser.parseInclusiveOrExpression(Parser.java)
   at org.codehaus.janino.Parser.parseConditionalAndExpression(Parser.java)
   at org.codehaus.janino.Parser.parseConditionalOrExpression(Parser.java)
   at org.codehaus.janino.Parser.parseConditionalExpression(Parser.java)
   at org.codehaus.janino.Parser.parseAssignmentExpression(Parser.java)
   at org.codehaus.janino.Parser.parseExpression(Parser.java)
   at org.codehaus.janino.Parser.parseReturnStatement(Parser.java)
   at org.codehaus.janino.Parser.parseStatement(Parser.java)
   at org.codehaus.janino.Parser.parseBlockStatement(Parser.java)
   at org.codehaus.janino.Parser.parseBlockStatements(Parser.java)
   at org.codehaus.janino.Parser.parseBlock(Parser.java)
   at org.codehaus.janino.Parser.parseMethodBody(Parser.java)
   at org.codehaus.janino.Parser.parseMethodDeclarationRest(Parser.java)
   at org.codehaus.janino.Parser.parseClassBodyDeclaration(Parser.java)
   at org.codehaus.janino.Parser.parseClassBody(Parser.java)
   at org.codehaus.janino.Parser.parseClassDeclarationRest(Parser.java)
   at 
 org.codehaus.janino.Parser.parsePackageMemberTypeDeclaration(Parser.java)
   at org.codehaus.janino.Parser.parseCompilationUnit(Parser.java)
   at 
 org.drools.commons.jci.compilers.JaninoJavaCompiler$CompilingIClassLoader.findIClass(JaninoJavaCompiler.java:90)
   at org.codehaus.janino.IClassLoader.loadIClass(IClassLoader.java)
   at 
 org.codehaus.janino.UnitCompiler.loadFullyQualifiedClass(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.import2(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.access$2(UnitCompiler.java)
   at 
 org.codehaus.janino.UnitCompiler$1.visitSingleStaticImportDeclaration(UnitCompiler.java)
   at 
 org.codehaus.janino.Java$CompilationUnit$SingleStaticImportDeclaration.accept(Java.java)
   at org.codehaus.janino.UnitCompiler.init(UnitCompiler.java)
   at 
 org.drools.commons.jci.compilers.JaninoJavaCompiler$CompilingIClassLoader.findIClass(JaninoJavaCompiler.java:91)
   at org.codehaus.janino.IClassLoader.loadIClass(IClassLoader.java)
   at 
 org.codehaus.janino.UnitCompiler.loadFullyQualifiedClass(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.import2(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.access$2(UnitCompiler.java)
   at 
 org.codehaus.janino.UnitCompiler$1.visitSingleStaticImportDeclaration(UnitCompiler.java)
   at 
 org.codehaus.janino.Java$CompilationUnit$SingleStaticImportDeclaration.accept(Java.java)
   at org.codehaus.janino.UnitCompiler.init(UnitCompiler.java)
   at 
 org.drools.commons.jci.compilers.JaninoJavaCompiler$CompilingIClassLoader.findIClass(JaninoJavaCompiler.java:91)
   at org.codehaus.janino.IClassLoader.loadIClass(IClassLoader.java)
   at 
 org.codehaus.janino.UnitCompiler.loadFullyQualifiedClass(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.import2(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.access$2(UnitCompiler.java)
   at 
 org.codehaus.janino.UnitCompiler$1.visitSingleStaticImportDeclaration(UnitCompiler.java)
   at 
 org.codehaus.janino.Java$CompilationUnit$SingleStaticImportDeclaration.accept(Java.java)
   at org.codehaus.janino.UnitCompiler.init(UnitCompiler.java)
   at 
 org.drools.commons.jci.compilers.JaninoJavaCompiler$CompilingIClassLoader.findIClass(JaninoJavaCompiler.java:91)
 

[jira] Closed: (JCI-53) Stack overflow on cross imports in commons-jci-janino

2007-09-06 Thread Torsten Curdt (JIRA)

 [ 
https://issues.apache.org/jira/browse/JCI-53?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Torsten Curdt closed JCI-53.


   Resolution: Fixed
Fix Version/s: (was: 1.1)
   1.1RC1

The new janino release fixed the problem.

 Stack overflow on cross imports in commons-jci-janino
 -

 Key: JCI-53
 URL: https://issues.apache.org/jira/browse/JCI-53
 Project: Commons JCI
  Issue Type: Bug
  Components: compiler janino
Affects Versions: 1.1
Reporter: Edson Tirelli
Assignee: Torsten Curdt
Priority: Blocker
 Fix For: 1.1RC1


 A stack overflow occurs when trying to compile classes with cross references 
 using commons-jci-janino, because an infinite recursion. The simple presence 
 of cross reference import is enough to cause the problem.
 Example: the following classes will recreate the problem:
 package test;
 import static test.Func2.func2;
 public class Func1 {
public static boolean func1() throws Exception {
return true;
}
 }
 package test;
 import static test.Func1.func1;
 public class Func2 {
public static boolean func2() throws Exception {
return true;
}
 } 
 The exception stack is:
 java.lang.StackOverflowError
   at org.codehaus.janino.Parser.parseAndExpression(Parser.java)
   at org.codehaus.janino.Parser.parseExclusiveOrExpression(Parser.java)
   at org.codehaus.janino.Parser.parseInclusiveOrExpression(Parser.java)
   at org.codehaus.janino.Parser.parseConditionalAndExpression(Parser.java)
   at org.codehaus.janino.Parser.parseConditionalOrExpression(Parser.java)
   at org.codehaus.janino.Parser.parseConditionalExpression(Parser.java)
   at org.codehaus.janino.Parser.parseAssignmentExpression(Parser.java)
   at org.codehaus.janino.Parser.parseExpression(Parser.java)
   at org.codehaus.janino.Parser.parseReturnStatement(Parser.java)
   at org.codehaus.janino.Parser.parseStatement(Parser.java)
   at org.codehaus.janino.Parser.parseBlockStatement(Parser.java)
   at org.codehaus.janino.Parser.parseBlockStatements(Parser.java)
   at org.codehaus.janino.Parser.parseBlock(Parser.java)
   at org.codehaus.janino.Parser.parseMethodBody(Parser.java)
   at org.codehaus.janino.Parser.parseMethodDeclarationRest(Parser.java)
   at org.codehaus.janino.Parser.parseClassBodyDeclaration(Parser.java)
   at org.codehaus.janino.Parser.parseClassBody(Parser.java)
   at org.codehaus.janino.Parser.parseClassDeclarationRest(Parser.java)
   at 
 org.codehaus.janino.Parser.parsePackageMemberTypeDeclaration(Parser.java)
   at org.codehaus.janino.Parser.parseCompilationUnit(Parser.java)
   at 
 org.drools.commons.jci.compilers.JaninoJavaCompiler$CompilingIClassLoader.findIClass(JaninoJavaCompiler.java:90)
   at org.codehaus.janino.IClassLoader.loadIClass(IClassLoader.java)
   at 
 org.codehaus.janino.UnitCompiler.loadFullyQualifiedClass(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.import2(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.access$2(UnitCompiler.java)
   at 
 org.codehaus.janino.UnitCompiler$1.visitSingleStaticImportDeclaration(UnitCompiler.java)
   at 
 org.codehaus.janino.Java$CompilationUnit$SingleStaticImportDeclaration.accept(Java.java)
   at org.codehaus.janino.UnitCompiler.init(UnitCompiler.java)
   at 
 org.drools.commons.jci.compilers.JaninoJavaCompiler$CompilingIClassLoader.findIClass(JaninoJavaCompiler.java:91)
   at org.codehaus.janino.IClassLoader.loadIClass(IClassLoader.java)
   at 
 org.codehaus.janino.UnitCompiler.loadFullyQualifiedClass(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.import2(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.access$2(UnitCompiler.java)
   at 
 org.codehaus.janino.UnitCompiler$1.visitSingleStaticImportDeclaration(UnitCompiler.java)
   at 
 org.codehaus.janino.Java$CompilationUnit$SingleStaticImportDeclaration.accept(Java.java)
   at org.codehaus.janino.UnitCompiler.init(UnitCompiler.java)
   at 
 org.drools.commons.jci.compilers.JaninoJavaCompiler$CompilingIClassLoader.findIClass(JaninoJavaCompiler.java:91)
   at org.codehaus.janino.IClassLoader.loadIClass(IClassLoader.java)
   at 
 org.codehaus.janino.UnitCompiler.loadFullyQualifiedClass(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.import2(UnitCompiler.java)
   at org.codehaus.janino.UnitCompiler.access$2(UnitCompiler.java)
   at 
 org.codehaus.janino.UnitCompiler$1.visitSingleStaticImportDeclaration(UnitCompiler.java)
   at 
 org.codehaus.janino.Java$CompilationUnit$SingleStaticImportDeclaration.accept(Java.java)
   at org.codehaus.janino.UnitCompiler.init(UnitCompiler.java)
   at