Community
Participate
Working Groups
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)
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?
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?
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?
let me know if still an issue...