United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6864914 SPECjvm2008 produces invalid result with zero based Compressed Oops
JDK-6864914 : SPECjvm2008 produces invalid result with zero based Compressed Oops

Details
Type:
Bug
Submit Date:
2009-07-25
Status:
Resolved
Updated Date:
2010-04-03
Project Name:
JDK
Resolved Date:
2009-08-22
Component:
hotspot
OS:
solaris_10
Sub-Component:
compiler
CPU:
x86
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs16
Fixed Versions:
hs16 (b08)

Related Reports
Backport:
Backport:
Relates:
Relates:

Sub Tasks

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-comp/hotspot/rev/60fea60a6db5
                                     
2009-07-31
EVALUATION

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

Always use "lea" instruction for narrow oop decoding instead of "shift".
                                     
2009-07-31
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".
                                     
2009-07-31
EVALUATION

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



Hardware and Software, Engineered to Work Together