JDK-7046960 : Compiler throws assertion.
  • Type: Bug
  • Component: tools
  • Sub-Component: javac
  • Affected Version: 6u25
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • CPU: x86
  • Submitted: 2011-05-20
  • Updated: 2012-03-20
  • Resolved: 2011-09-27
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
1.6.0_25

ADDITIONAL OS VERSION INFORMATION :
Windows 7 Professional
Version 6.1 (Build 7601: Service Pack 1)

EXTRA RELEVANT SYSTEM CONFIGURATION :
Intel i7 3GHz, 4 Cores

A DESCRIPTION OF THE PROBLEM :
Get exception in javac running following command:

C:\BuildAndDeploymentTests\BuildTest>"C:\Program Files\Java\jdk1.6.0_25\bin\javac.exe" -cp C:\Subversion\Java\TempRoughInWork\Core\src;C:\Subversion\Java\TempRoughInWork\Core\lib\commons-codec-1.4.jar
 -d C:\BuildAndDeploymentTests\BuildTest\BuildSandbox\Core C:\Subversion\Java\TempRoughInWork\Core\src\com\accusoft\imagegear\formats\*.java

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Either a successful compilation or an message describing a syntax or language error.
ACTUAL -
Numerous class files were produced.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
C:\BuildAndDeploymentTests\BuildTest>"C:\Program Files\Java\jdk1.6.0_25\bin\javac.exe" -cp C:\Subversion\Java\TempRoughInWork\Core\src;C:\Subversion\Java\TempRoughInWork\Core\lib\commons-codec-1.4.jar
 -d C:\BuildAndDeploymentTests\BuildTest\BuildSandbox\Core C:\Subversion\Java\TempRoughInWork\Core\src\com\accusoft\imagegear\formats\*.java
An exception has occurred in the compiler (1.6.0_25). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport)  after checking the Bug Parade for duplicates. Include
your program and the following diagnostic in your report.  Thank you.
java.lang.AssertionError: (Integer)nOutObjectAmount.argvalue
        at com.sun.tools.javac.comp.Lower.abstractLval(Lower.java:1873)
        at com.sun.tools.javac.comp.Lower.lowerBoxedPostop(Lower.java:2753)
        at com.sun.tools.javac.comp.Lower.visitUnary(Lower.java:2793)
        at com.sun.tools.javac.tree.JCTree$JCUnary.accept(JCTree.java:1392)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:228)
        at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1074)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
        at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
        at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3021)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.comp.Lower.visitIf(Lower.java:2459)
        at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1050)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
        at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
        at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3021)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.comp.Lower.visitForLoop(Lower.java:3042)
        at com.sun.tools.javac.tree.JCTree$JCForLoop.accept(JCTree.java:818)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
        at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
        at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3021)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
        at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
        at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3021)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:130)
        at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2344)
        at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2263)
        at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:639)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2008)
        at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:575)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:1921)
        at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3158)
        at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1199)
        at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1118)
        at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:765)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:730)
        at com.sun.tools.javac.main.Main.compile(Main.java:353)
        at com.sun.tools.javac.main.Main.compile(Main.java:279)
        at com.sun.tools.javac.main.Main.compile(Main.java:270)
        at com.sun.tools.javac.Main.compile(Main.java:69)
        at com.sun.tools.javac.Main.main(Main.java:54)

REPRODUCIBILITY :
This bug can be reproduced always.
more information from submitter -

haven't been able to revert the code and test on 1.7, or
determine exactly how to reproduce the crash. The Java constructions (I
noted in the report, and describe below) produced the crash in some
instances and not in others, and also gave validator(?) exceptions upon
loading, when classes with the constructions did compile. Some classes with
the constructions that compiled, on the other hand, would not give validator
exceptions when they were loaded. The main construction was the use of a
class,

public final class RefObject<T> {

    public T argvalue;

    public RefObject(T refarg) {
        argvalue = refarg;
    }

}

When some methods had arguments of type RefObject<Integer> val, the compiler
and validator problem would result from pre or post increment or decrement
of val's argvalue, like

"val.argvalue++;" or "++val.argvalue;", for example.

Comments
EVALUATION It seems like this is a duplicate of 6751514 (the stack trace looks very similar) - however, without an actual test case it's impossible to tell for sure.
23-05-2011