JDK-6864914 : SPECjvm2008 produces invalid result with zero based Compressed Oops
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs16
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: x86
  • Submitted: 2009-07-25
  • Updated: 2010-04-03
  • Resolved: 2009-08-22
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u18Fixed 7Fixed hs16Fixed
Related Reports
Relates :  
Relates :  
Description
% java -XX:+UseCompressedOops -XX:+PrintCompressedOopsMode -Xmx4g -Xms4g -Xmn3g -jar SPECjvm2008.jar -icsv

heap address: 0x00000006fac00000, zero based Compressed Oops

...

--- --- --- --- --- --- --- --- ---

  Benchmark:   compiler.compiler
  Run mode:    timed run
  Test type:   multi
  Threads:     16
  Warmup:      120s
  Iterations:  1
  Run length:  240s
An exception has occurred in the compiler (1.7.0-opensource). 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.NullPointerException
	at com.sun.tools.javac.code.Scope.lookup(Scope.java:284)
	at com.sun.tools.javac.comp.Resolve.findVar(Resolve.java:467)
	at com.sun.tools.javac.comp.Resolve.findIdent(Resolve.java:991)
	at com.sun.tools.javac.comp.Resolve.resolveIdent(Resolve.java:1173)
	at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:1760)
	at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:1680)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1845)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1652)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:397)
	at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:1668)
	at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1540)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitParens(Attr.java:1584)
	at com.sun.tools.javac.tree.JCTree$JCParens.accept(JCTree.java:1416)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:397)
	at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:1667)
	at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1540)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:397)
	at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:1668)
	at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1540)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:397)
	at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:1667)
	at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1540)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:390)
	at com.sun.tools.javac.comp.Attr.visitReturn(Attr.java:1161)
	at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1216)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:426)
	at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:762)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:766)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:681)
	at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:654)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2741)
	at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2667)
	at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2603)
	at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1051)
	at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:780)
	at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:745)
	at com.sun.tools.javac.main.Main.compile(Main.java:381)
	at com.sun.tools.javac.main.Main.compile(Main.java:307)
	at spec.benchmarks.compiler.Compiler.compile(Compiler.java:32)
	at spec.benchmarks.compiler.MainBase.harnessMain(MainBase.java:58)
	at spec.benchmarks.compiler.compiler.Main.setupBenchmark(Main.java:40)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at spec.harness.ProgramRunner.invokeBmSetupBenchmark(ProgramRunner.java:183)
	at spec.harness.ProgramRunner.runBenchmark(ProgramRunner.java:301)
	at spec.harness.ProgramRunner.run(ProgramRunner.java:98)
ERROR: compiler exit code: 4

Warmup (120s) begins: Fri Jul 24 17:10:02 PDT 2009
An exception has occurred in the compiler (1.7.0-opensource). 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.NullPointerException
	at com.sun.tools.javac.code.Scope.lookup(Scope.java:284)
	at com.sun.tools.javac.comp.Resolve.findVar(Resolve.java:467)
	at com.sun.tools.javac.comp.Resolve.findIdent(Resolve.java:991)
	at com.sun.tools.javac.comp.Resolve.resolveIdent(Resolve.java:1173)
	at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:1760)
	at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:1680)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1845)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1652)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1845)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1652)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1845)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1652)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribArgs(Attr.java:434)
	at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1280)
	at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1297)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:390)
	at com.sun.tools.javac.comp.Attr.visitAssign(Attr.java:1594)
	at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1441)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:397)
	at com.sun.tools.javac.comp.Attr.visitExec(Attr.java:1064)
	at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1143)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:426)
	at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:762)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:766)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.visitIf(Attr.java:1056)
	at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1116)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:426)
	at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:762)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:766)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:681)
	at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:654)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2741)
	at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2667)
	at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2603)
	at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1051)
	at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:780)
	at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:745)
	at com.sun.tools.javac.main.Main.compile(Main.java:381)
	at com.sun.tools.javac.main.Main.compile(Main.java:307)
	at spec.benchmarks.compiler.Compiler.compile(Compiler.java:32)
	at spec.benchmarks.compiler.MainBase.harnessMain(MainBase.java:53)
	at spec.harness.BenchmarkThread.runLoop(BenchmarkThread.java:170)
	at spec.harness.BenchmarkThread.executeIteration(BenchmarkThread.java:82)
	at spec.harness.BenchmarkThread.run(BenchmarkThread.java:59)
An exception has occurred in the compiler (1.7.0-opensource). 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.NullPointerException
	at com.sun.tools.javac.code.Scope.lookup(Scope.java:284)
	at com.sun.tools.javac.comp.Resolve.findVar(Resolve.java:467)
	at com.sun.tools.javac.comp.Resolve.findIdent(Resolve.java:991)
	at com.sun.tools.javac.comp.Resolve.resolveIdent(Resolve.java:1173)
	at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:1760)
	at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:1680)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1845)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1652)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1845)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1652)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1845)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1652)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribArgs(Attr.java:434)
	at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1280)
	at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1297)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:390)
	at com.sun.tools.javac.comp.Attr.visitAssign(Attr.java:1594)
	at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1441)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:397)
	at com.sun.tools.javac.comp.Attr.visitExec(Attr.java:1064)
	at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1143)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:426)
	at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:762)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:766)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.visitIf(Attr.java:1056)
	at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1116)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:426)
	at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:762)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:766)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:681)
	at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:654)
	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:373)
	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:410)
	at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2741)
	at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2667)
	at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2603)
	at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1051)
	at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:780)
	at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:745)
	at com.sun.tools.javac.main.Main.compile(Main.java:381)
	at com.sun.tools.javac.main.Main.compile(Main.java:307)
	at spec.benchmarks.compiler.Compiler.compile(Compiler.java:32)
	at spec.benchmarks.compiler.MainBase.harnessMain(MainBase.java:53)
	at spec.harness.BenchmarkThread.runLoop(BenchmarkThread.java:170)
	at spec.harness.BenchmarkThread.executeIteration(BenchmarkThread.java:82)
	at spec.harness.BenchmarkThread.run(BenchmarkThread.java:59)
Warmup (120s) ends:   Fri Jul 24 17:10:43 PDT 2009
Warmup (120s) result:  **NOT VALID**

Errors in benchmark: compiler.compiler
  [warmup] Harness interruped during measurement period.
  [warmup][bt:3|op:1] Validation failure on line 1.
    Expected output: 
    [001] Total checksum:5918346888751659393
    Received output: 
    [001] ERROR: compiler exit code: 4
Complete output: /export/home/kvn/SPECjvm2008/results/SPECjvm2008.009/compiler.compiler.bt3.i0.op1.error.log
Validation file: /export/home/kvn/SPECjvm2008/resources/compiler.compiler/validity.compiler.compiler.dat


  [warmup][bt:10|op:1] Validation failure on line 1.
    Expected output: 
    [001] Total checksum:5918346888751659393
    Received output: 
    [001] ERROR: compiler exit code: 4
Complete output: /export/home/kvn/SPECjvm2008/results/SPECjvm2008.009/compiler.compiler.bt10.i0.op1.error.log
Validation file: /export/home/kvn/SPECjvm2008/resources/compiler.compiler/validity.compiler.compiler.dat


Score on compiler.compiler:  **NOT VALID**

Benchmark compiler.compiler failed. Aborting run.

Results are stored in: 
/export/home/kvn/SPECjvm2008/results/SPECjvm2008.009/SPECjvm2008.009.raw
Generating reports in:
/export/home/kvn/SPECjvm2008/results/SPECjvm2008.009

Composite result: not valid 
%

Comments
EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/60fea60a6db5
10-08-2009

PUBLIC COMMENTS Problem: decodeHeapOop_not_null() defined as not modifying flags but "shift" instruction is used for it when narrow oop base is zero. Solution: Always use "lea" instruction for narrow oop decoding instead of "shift".
31-07-2009

SUGGESTED FIX Always use "lea" instruction for narrow oop decoding instead of "shift".
31-07-2009

EVALUATION decodeHeapOop_not_null() defined as not modifying flags but "shift" instruction is used for it when narrow oop base is zero.
31-07-2009

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/60fea60a6db5
31-07-2009