Bug 218507 - Generic, unmessaged RuntimeException when running ajc 1.6.0m1
Summary: Generic, unmessaged RuntimeException when running ajc 1.6.0m1
Status: NEW
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.6.0M1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-11 10:00 EST by Jamie Burrell CLA
Modified: 2008-10-02 14:20 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jamie Burrell CLA 2008-02-11 10:00:29 EST
Build ID: I20070625-1500

Steps To Reproduce:
1.  Run "%JAVA_HOME%\bin\java" -classpath "%ASPECTJ_HOME%\lib\aspectjtools.jar;%JAVA_HOME%\lib\tools.jar;%CLASSPATH%" -Xmx1024M org.aspectj.tools.ajc.Main -1.6 -g -showWeaveInfo -verbose -d target\classes -sourceroots src/main/java against a file set containing a large file (2k lines or more)

More information:
I am getting a runtime exception when running the above command against numerous projects.  
Specific files are affected, and it seems to carry on after those files.  The files seem to have nothing in common besides being largish.  It is also not occurring at the same place in every file (although differing by file, it is always the same place for a given file).

The main issue I have is that there is no message, just a stack trace, meaning it is basically impossible to tell what's wrong.  I can't even find the source for this particular issue.  It may not even be a bug, short of some terrible exception raising code.  If that's the case, I'd just welcome a description of what's going on.

An example trace:
[...snip...]
compiling M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlement.java

java.lang.RuntimeException:
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForNameAndType(ConstantPool.java:661)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:624)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:638)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream.invokestatic(CodeStream.java:4211)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.StackMapFrameCodeStream.invokestatic(StackMapFrameCodeStream.java:1635)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:163)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration.generateCode(LocalDeclaration.java:119)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:230)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:177)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:535)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:604)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:215)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:631)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:988)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:265)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:181)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
        at org.aspectj.tools.ajc.Main.run(Main.java:378)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:253)
        at org.aspectj.tools.ajc.Main.main(Main.java:88)
woven class com.jpmorgan.pathclear.siml.setttlmadaptor.dto.StaSettlement$RefType (from M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaS
ettlement.java)

woven class com.jpmorgan.pathclear.siml.setttlmadaptor.dto.StaSettlement (from M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlemen
t.java)
[...snip...]

If I run the exact same statement, but use -1.5 compliance flag, I get:
compiling M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlement.java

java.lang.RuntimeException:
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:630)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:638)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream.invokeinterface(CodeStream.java:3849)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:169)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement.generateArguments(Statement.java:102)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:159)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression.generateCode(Expression.java:605)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:230)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:177)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:535)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:604)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:215)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:631)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:988)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:265)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:181)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
        at org.aspectj.tools.ajc.Main.run(Main.java:378)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:253)
        at org.aspectj.tools.ajc.Main.main(Main.java:88)
java.lang.RuntimeException:
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.putInCacheIfAbsent(ConstantPool.java:855)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:607)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:638)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream.invokeinterface(CodeStream.java:3849)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:169)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement.generateArguments(Statement.java:102)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:159)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression.generateCode(Expression.java:605)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:230)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:177)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:535)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:604)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:215)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:631)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:988)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:265)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:181)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
        at org.aspectj.tools.ajc.Main.run(Main.java:378)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:253)
        at org.aspectj.tools.ajc.Main.main(Main.java:88)
java.lang.RuntimeException:
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:630)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:638)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream.invokeinterface(CodeStream.java:3849)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:169)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement.generateArguments(Statement.java:102)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:159)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression.generateCode(Expression.java:605)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:230)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:177)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:535)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:604)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:215)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:631)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:988)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:265)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:181)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
        at org.aspectj.tools.ajc.Main.run(Main.java:378)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:253)
        at org.aspectj.tools.ajc.Main.main(Main.java:88)
woven class com.jpmorgan.pathclear.siml.setttlmadaptor.dto.StaSettlement (from M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlemen
t.java)

woven class com.jpmorgan.pathclear.siml.setttlmadaptor.dto.StaSettlement$RefType (from M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaS
ettlement.java)
Comment 1 Andrew Clement CLA 2008-02-11 10:33:38 EST
wierd...

that line is actually a blank line in the method literalIndexForNameAndType...

however, it does occur at the end of a block that handles the error case when there is no more space in the constant pool for adding the the name and type information, so could be related to that - given that you say this happens for a large file.

When you use the -1.5 option, the error line is again a blank line at the end of an error handling block.

Can I ask what VM you are running the compilation on? Is it the latest service refresh of 1.6 on that platform?
Comment 2 Jamie Burrell CLA 2008-02-11 11:26:32 EST
Thanks for the reply.
(In reply to comment #1)
> wierd...
> 
> that line is actually a blank line in the method literalIndexForNameAndType...
> 
> however, it does occur at the end of a block that handles the error case when
> there is no more space in the constant pool for adding the the name and type
> information, so could be related to that - given that you say this happens for
> a large file.
> 
> When you use the -1.5 option, the error line is again a blank line at the end
> of an error handling block.
> 
> Can I ask what VM you are running the compilation on? Is it the latest service
> refresh of 1.6 on that platform?
> 
It's Sun's JDK 1.6.0_02 for Windows XP (32-bit).  On closer inspection, I believe the size may be a red herring (although having no visibility of the source, I can't be 100% sure).  The file in this trace is only 55k in size, and less than 2000 lines.
There's nothing freaky in the file either, apart from a static inner enum definition, but the other files don't have that issue.

Anyway, I downloaded JDK 1.6.0_04 (the latest Sun JDK6) and tried that.  I also just tried to compile that file in particular.  Output is here:
M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor>"%JAVA_HOME%\bin\java" -classpath "%ASPECTJ_HOME%\lib\aspectjtools.jar;%JAVA_HOME%\lib\tools.jar;%CLASSPATH%" -Xmx1024M org.aspectj.tools.ajc.Main -1.6
-g -showWeaveInfo -verbose -d target\classes M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlement.java
directory classpath entry does not exist: C:\Program Files\Java\jdk1.6.0_04\jre\lib\sunrsasign.jar

zipfile classpath entry does not exist: C:\Program Files\Java\jdk1.6.0_04\jre\classes

Pipelining compilation

compiling M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlement.java

java.lang.RuntimeException:
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForNameAndType(ConstantPool.java:661)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:624)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool.literalIndexForMethod(ConstantPool.java:638)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream.invokestatic(CodeStream.java:4211)
        at org.aspectj.org.eclipse.jdt.internal.compiler.codegen.StackMapFrameCodeStream.invokestatic(StackMapFrameCodeStream.java:1635)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.generateCode(MessageSend.java:163)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration.generateCode(LocalDeclaration.java:119)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:230)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:177)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:535)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:604)
        at org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:215)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:631)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:988)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:265)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:181)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
        at org.aspectj.tools.ajc.Main.run(Main.java:378)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:253)
        at org.aspectj.tools.ajc.Main.main(Main.java:88)
weaver operating in reweavable mode.  Need to verify any required types exist.

woven class com.jpmorgan.pathclear.siml.setttlmadaptor.dto.StaSettlement (from M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlement.java)

woven class com.jpmorgan.pathclear.siml.setttlmadaptor.dto.StaSettlement$RefType (from M:\O044984_p2_view\pathclear\siml\services\setttlmadaptor\src\main\java\com\jpmorgan\pathclear\siml\setttlmadaptor\dto\StaSettlement.java)

Compiler took 1953ms

Any ideas where I'd go to look at the source (I can't find my way around the Eclipse CVS labyrinth)?  Maybe if I can see it I can marry it up to some sort of common theme in my code?
Comment 3 Andrew Clement CLA 2008-02-21 20:16:44 EST
Here is a reference to the constant pool class:

http://dev.eclipse.org/viewcvs/index.cgi/org.aspectj/shadows/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.java?revision=1.9.2.2&root=Tools_Project&view=markup

661 is blank.

Here is a link to a .zip of the source code for the modified JDT compiler that AspectJ uses:

http://dev.eclipse.org/viewcvs/index.cgi/org.aspectj/modules/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip?revision=1.95&root=Tools_Project

Any way you can trim down the source file in question to discover what construct is triggering the failure?
Comment 4 Andrew Clement CLA 2008-10-02 14:20:39 EDT
let me know if still an issue...