Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: hg tip
-
Fix Version/s: 3.2
-
Component/s: Compiler: Optimizing
-
Labels:None
-
Number of attachments :
Description
Enabling -X:opt:live_range_splitting causes various problems with different benchmarks, which include NullPointerExceptions problems, the VM dying in GC due to a NullPointerException, and NoSuchElementException problems.
Several SPECjvm98 and DaCapo benchmarks suffer from this, details are below.
Comman lines used for this:
rvm -X:aos:enable_recompilation=false -X:aos:initial_compiler=opt -X:irc:O2 -X:opt:live_range_splitting=true -Xms128M -Xmx128M SpecApplication -a -m1 -M1 -s100 -g _202_jess
(other benchmark command lines are analogous)
+++ 202_jess crashes as follows:
>>>> spec.benchmarks._202_jess.Main exited with exception: java.lang.NullPointerException <<<<
java.lang.NullPointerException
at .<invisible method>(Unknown Source:0)
at java.lang.VMThrowable.fillInStackTrace(VMThrowable.java:49)
at java.lang.Throwable.fillInStackTrace(Throwable.java:498)
at java.lang.Throwable.<init>(Throwable.java:159)
at java.lang.Throwable.<init>(Throwable.java:148)
at java.lang.Exception.<init>(Exception.java:66)
at java.lang.RuntimeException.<init>(RuntimeException.java:64)
at java.lang.NullPointerException.<init>(NullPointerException.java:69)
at org.jikesrvm.runtime.RuntimeEntrypoints.deliverHardwareException(RuntimeEntrypoints.java:621)
at .<hardware trap>(Unknown Source:0)
at spec.benchmarks._202_jess.jess.ValueVector.add(ValueVector.java:62)
at spec.benchmarks._202_jess.jess.Funcall.AddArgument(Funcall.java:129)
at spec.benchmarks._202_jess.jess.Funcall.AddArgument(Funcall.java:124)
at spec.benchmarks._202_jess.jess.Jesp.ParseFuncall(Jesp.java:200)
at spec.benchmarks._202_jess.jess.Jesp.ParseSexp(Jesp.java:114)
at spec.benchmarks._202_jess.jess.Jesp.parse(Jesp.java:54)
at spec.benchmarks._202_jess.jess.Rete.ExecuteCommand(Rete.java:773)
at spec.benchmarks._202_jess.Jess.run_jess(Jess.java:199)
at spec.benchmarks._202_jess.Jess.inst_main(Jess.java:177)
at spec.benchmarks._202_jess.Main.runBenchmark(Main.java:23)
at spec.benchmarks._202_jess.Main.harnessMain(Main.java:33)
at spec.harness.ProgramRunner.runOnce(ProgramRunner.java:373)
at spec.harness.ProgramRunner.runBenchmark2(ProgramRunner.java:305)
at spec.harness.ProgramRunner.runBenchmark(ProgramRunner.java:238)
at spec.harness.ProgramRunner.run(ProgramRunner.java:206)
at spec.harness.RunProgram.run(RunProgram.java:60)
at SpecApplication.runBenchmark(SpecApplication.java:240)
at SpecApplication.main(SpecApplication.java:156)
+++ jack crashes like:
Fatal error: NullPointerException within uninterruptible region.
Died in GC:
Exiting virtual machine due to uninterruptibility violation.
– Stack –
at Lorg/jikesrvm/runtime/RuntimeEntrypoints; deliverHardwareException(II)V at line 685
at <hardware trap>
at Lorg/jikesrvm/mm/mmtk/ObjectModel; copy(Lorg/vmmagic/unboxed/ObjectReference;I)Lorg/vmmagic/unboxed/ObjectReference; at line 50
at Lorg/mmtk/policy/CopySpace; traceObject(Lorg/mmtk/plan/TransitiveClosure;Lorg/vmmagic/unboxed/ObjectReference;I)Lorg/vmmagic/unboxed/ObjectReference; at line 187
at Lorg/mmtk/plan/generational/GenNurseryTraceLocal; traceObject(Lorg/vmmagic/unboxed/ObjectReference;)Lorg/vmmagic/unboxed/ObjectReference; at line 84
at Lorg/mmtk/plan/TraceLocal; traceObject(Lorg/vmmagic/unboxed/ObjectReference;Z)Lorg/vmmagic/unboxed/ObjectReference; at line 299
at Lorg/mmtk/plan/TraceLocal; processRootEdge(Lorg/vmmagic/unboxed/Address;Z)V at line 122
at Lorg/mmtk/plan/generational/GenNurseryTraceLocal; processRememberedSets()V at line 103
at Lorg/mmtk/plan/TraceLocal; completeTrace()V at line 485
at Lorg/mmtk/plan/generational/GenCollector; collectionPhase(SZ)V at line 109
at Lorg/mmtk/plan/generational/marksweep/GenMSCollector; collectionPhase(SZ)V at line 156
at Lorg/mmtk/plan/Phase; processPhaseStack(Z)Z at line 477
at Lorg/mmtk/plan/Phase; beginNewPhaseStack(I)Z at line 390
at Lorg/mmtk/plan/StopTheWorldCollector; collect()V at line 39
at Lorg/jikesrvm/mm/mminterface/CollectorThread; run()V at line 387
at Lorg/jikesrvm/scheduler/RVMThread; startoff()V at line 646
+++ antlr crashes like:
Fatal error: NullPointerException within uninterruptible region.
Died in GC:
Exiting virtual machine due to uninterruptibility violation.
– Stack –
at Lorg/jikesrvm/runtime/RuntimeEntrypoints; deliverHardwareException(II)V at line 685
at <hardware trap>
at Lorg/jikesrvm/mm/mmtk/ObjectModel; copy(Lorg/vmmagic/unboxed/ObjectReference;I)Lorg/vmmagic/unboxed/ObjectReference; at line 50
at Lorg/mmtk/policy/CopySpace; traceObject(Lorg/mmtk/plan/TransitiveClosure;Lorg/vmmagic/unboxed/ObjectReference;I)Lorg/vmmagic/unboxed/ObjectReference; at line 187
at Lorg/mmtk/plan/generational/GenNurseryTraceLocal; traceObject(Lorg/vmmagic/unboxed/ObjectReference;)Lorg/vmmagic/unboxed/ObjectReference; at line 84
at Lorg/mmtk/plan/TraceLocal; traceObject(Lorg/vmmagic/unboxed/ObjectReference;Z)Lorg/vmmagic/unboxed/ObjectReference; at line 299
at Lorg/mmtk/plan/TraceLocal; processRootEdge(Lorg/vmmagic/unboxed/Address;Z)V at line 122
at Lorg/mmtk/plan/generational/GenNurseryTraceLocal; processRememberedSets()V at line 103
at Lorg/mmtk/plan/TraceLocal; completeTrace()V at line 485
at Lorg/mmtk/plan/generational/GenCollector; collectionPhase(SZ)V at line 109
at Lorg/mmtk/plan/generational/marksweep/GenMSCollector; collectionPhase(SZ)V at line 156
at Lorg/mmtk/plan/Phase; processPhaseStack(Z)Z at line 477
at Lorg/mmtk/plan/Phase; beginNewPhaseStack(I)Z at line 390
at Lorg/mmtk/plan/StopTheWorldCollector; collect()V at line 39
at Lorg/jikesrvm/mm/mminterface/CollectorThread; run()V at line 387
at Lorg/jikesrvm/scheduler/RVMThread; startoff()V at line 646
+++ hsqldb crashes like:
java.util.NoSuchElementException: Basic Block Enumeration
at .<invisible method>(Unknown Source:0)
at java.lang.VMThrowable.fillInStackTrace(VMThrowable.java:49)
at java.lang.Throwable.fillInStackTrace(Throwable.java:498)
at java.lang.Throwable.<init>(Throwable.java:159)
at java.lang.Exception.<init>(Exception.java:78)
at java.lang.RuntimeException.<init>(RuntimeException.java:76)
at java.util.NoSuchElementException.<init>(NoSuchElementException.java:86)
at org.jikesrvm.compilers.opt.ir.BasicBlock$BBEnum.fail(BasicBlock.java:1929)
at org.jikesrvm.compilers.opt.ir.BasicBlock$BBEnum.next(BasicBlock.java:1919)
at org.jikesrvm.compilers.opt.ir.BasicBlock.mergeFallThrough(BasicBlock.java:1576)
at org.jikesrvm.compilers.opt.controlflow.BranchOptimizationDriver.maximizeBasicBlocks(BranchOptimizationDriver.java:223)
at org.jikesrvm.compilers.opt.controlflow.BranchOptimizationDriver.perform(BranchOptimizationDriver.java:99)
at org.jikesrvm.compilers.opt.controlflow.BranchOptimizationDriver.perform(BranchOptimizationDriver.java:91)
at org.jikesrvm.compilers.opt.driver.CompilerPhase.performPhase(CompilerPhase.java:205)
at org.jikesrvm.compilers.opt.driver.OptimizationPlanAtomicElement.perform(OptimizationPlanAtomicElement.java:89)
at org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement.perform(OptimizationPlanCompositeElement.java:143)
at org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement.perform(OptimizationPlanCompositeElement.java:143)
at org.jikesrvm.compilers.opt.driver.CompilationPlan.execute(CompilationPlan.java:131)
at org.jikesrvm.compilers.opt.driver.OptimizingCompiler.compile(OptimizingCompiler.java:224)
at org.jikesrvm.compilers.common.RuntimeCompiler.optCompile(RuntimeCompiler.java:358)
at org.jikesrvm.compilers.common.RuntimeCompiler.optCompileWithFallBackInternal(RuntimeCompiler.java:449)
at org.jikesrvm.compilers.common.RuntimeCompiler.optCompileWithFallBack(RuntimeCompiler.java:429)
at org.jikesrvm.compilers.common.RuntimeCompiler.compile(RuntimeCompiler.java:686)
at org.jikesrvm.classloader.NormalMethod.genCode(NormalMethod.java:175)
at org.jikesrvm.classloader.RVMMethod.compile(RVMMethod.java:715)
at org.jikesrvm.runtime.DynamicLinker$DL_Helper.compileMethod(DynamicLinker.java:149)
at org.jikesrvm.runtime.DynamicLinker.lazyMethodInvoker(DynamicLinker.java:45)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source:0)
at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source:0)
at org.hsqldb.jdbc.jdbcDatabaseMetaData.execute(Unknown Source:0)
at org.hsqldb.jdbc.jdbcDatabaseMetaData.getDatabaseProductName(Unknown Source:0)
at dacapo.hsqldb.PseudoJDBCBench.createDatabase(PseudoJDBCBench.java:462)
at dacapo.hsqldb.PseudoJDBCBench.<init>(PseudoJDBCBench.java:228)
at dacapo.hsqldb.PseudoJDBCBench.main(PseudoJDBCBench.java:208)
at dacapo.hsqldb.HsqldbHarness.iterate(HsqldbHarness.java:19)
at dacapo.Benchmark.run(Benchmark.java:118)
at dacapo.TestHarness.runBenchmark(TestHarness.java:302)
at dacapo.TestHarness.main(TestHarness.java:242)
at Harness.main(Harness.java:5)
+++ luindex crashes like:
Fatal error: NullPointerException within uninterruptible region.
Died in GC:
Exiting virtual machine due to uninterruptibility violation.
– Stack –
at Lorg/jikesrvm/runtime/RuntimeEntrypoints; deliverHardwareException(II)V at line 685
at <hardware trap>
at Lorg/jikesrvm/mm/mmtk/ObjectModel; copy(Lorg/vmmagic/unboxed/ObjectReference;I)Lorg/vmmagic/unboxed/ObjectReference; at line 50
at Lorg/mmtk/policy/CopySpace; traceObject(Lorg/mmtk/plan/TransitiveClosure;Lorg/vmmagic/unboxed/ObjectReference;I)Lorg/vmmagic/unboxed/ObjectReference; at line 187
at Lorg/mmtk/plan/generational/GenNurseryTraceLocal; traceObject(Lorg/vmmagic/unboxed/ObjectReference;)Lorg/vmmagic/unboxed/ObjectReference; at line 84
at Lorg/mmtk/plan/TraceLocal; traceObject(Lorg/vmmagic/unboxed/ObjectReference;Z)Lorg/vmmagic/unboxed/ObjectReference; at line 299
at Lorg/mmtk/plan/TraceLocal; processEdge(Lorg/vmmagic/unboxed/ObjectReference;Lorg/vmmagic/unboxed/Address;)V at line 89
at Lorg/jikesrvm/mm/mminterface/SpecializedScanMethod; referenceArray(Ljava/lang/Object;Lorg/mmtk/plan/TransitiveClosure;)V at line 225
at Lorg/jikesrvm/mm/mmtk/Scanning; specializedScanObject(ILorg/mmtk/plan/TransitiveClosure;Lorg/vmmagic/unboxed/ObjectReference;)V at line 89
at Lorg/mmtk/plan/TraceLocal; scanObject(Lorg/vmmagic/unboxed/ObjectReference;)V at line 167
at Lorg/mmtk/plan/TraceLocal; completeTrace()V at line 483
at Lorg/mmtk/plan/generational/GenCollector; collectionPhase(SZ)V at line 109
at Lorg/mmtk/plan/generational/marksweep/GenMSCollector; collectionPhase(SZ)V at line 156
at Lorg/mmtk/plan/Phase; processPhaseStack(Z)Z at line 477
at Lorg/mmtk/plan/Phase; beginNewPhaseStack(I)Z at line 390
at Lorg/mmtk/plan/StopTheWorldCollector; collect()V at line 39
at Lorg/jikesrvm/mm/mminterface/CollectorThread; run()V at line 387
at Lorg/jikesrvm/scheduler/RVMThread; startoff()V at line 646
+++ lusearch crashes like:
java.lang.NullPointerException
at .<invisible method>(Unknown Source:0)
at java.lang.VMThrowable.fillInStackTrace(VMThrowable.java:49)
at java.lang.Throwable.fillInStackTrace(Throwable.java:498)
at java.lang.Throwable.<init>(Throwable.java:159)
at java.lang.Throwable.<init>(Throwable.java:148)
at java.lang.Exception.<init>(Exception.java:66)
at java.lang.RuntimeException.<init>(RuntimeException.java:64)
at java.lang.NullPointerException.<init>(NullPointerException.java:69)
at org.jikesrvm.runtime.RuntimeEntrypoints.deliverHardwareException(RuntimeEntrypoints.java:621)
at .<hardware trap>(Unknown Source:0)
at java.lang.StringBuffer.ensureCapacity_unsynchronized(StringBuffer.java:1152)
at java.lang.StringBuffer.append(StringBuffer.java:368)
at dacapo.lusearch.LusearchHarness$QueryThread.runQuery(LusearchHarness.java:180)
at dacapo.lusearch.LusearchHarness$QueryThread.run(LusearchHarness.java:159)
and also (lusearch):
java.util.NoSuchElementException: Basic Block Enumeration
at .<invisible method>(Unknown Source:0)
at java.lang.VMThrowable.fillInStackTrace(VMThrowable.java:49)
at java.lang.Throwable.fillInStackTrace(Throwable.java:498)
at java.lang.Throwable.<init>(Throwable.java:159)
at java.lang.Exception.<init>(Exception.java:78)
at java.lang.RuntimeException.<init>(RuntimeException.java:76)
at java.util.NoSuchElementException.<init>(NoSuchElementException.java:86)
at org.jikesrvm.compilers.opt.ir.BasicBlock$BBEnum.fail(BasicBlock.java:1929)
at org.jikesrvm.compilers.opt.ir.BasicBlock$BBEnum.next(BasicBlock.java:1919)
at org.jikesrvm.compilers.opt.ir.BasicBlock.mergeFallThrough(BasicBlock.java:1576)
at org.jikesrvm.compilers.opt.controlflow.BranchOptimizationDriver.maximizeBasicBlocks(BranchOptimizationDriver.java:223)
at org.jikesrvm.compilers.opt.controlflow.BranchOptimizationDriver.perform(BranchOptimizationDriver.java:99)
at org.jikesrvm.compilers.opt.controlflow.BranchOptimizationDriver.perform(BranchOptimizationDriver.java:91)
at org.jikesrvm.compilers.opt.driver.CompilerPhase.performPhase(CompilerPhase.java:205)
at org.jikesrvm.compilers.opt.driver.OptimizationPlanAtomicElement.perform(OptimizationPlanAtomicElement.java:89)
at org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement.perform(OptimizationPlanCompositeElement.java:143)
at org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement.perform(OptimizationPlanCompositeElement.java:143)
at org.jikesrvm.compilers.opt.driver.CompilationPlan.execute(CompilationPlan.java:131)
at org.jikesrvm.compilers.opt.driver.OptimizingCompiler.compile(OptimizingCompiler.java:224)
at org.jikesrvm.compilers.common.RuntimeCompiler.optCompile(RuntimeCompiler.java:358)
at org.jikesrvm.compilers.common.RuntimeCompiler.optCompileWithFallBackInternal(RuntimeCompiler.java:449)
at org.jikesrvm.compilers.common.RuntimeCompiler.optCompileWithFallBack(RuntimeCompiler.java:429)
at org.jikesrvm.compilers.common.RuntimeCompiler.compile(RuntimeCompiler.java:686)
at org.jikesrvm.classloader.NormalMethod.genCode(NormalMethod.java:175)
at org.jikesrvm.classloader.RVMMethod.compile(RVMMethod.java:715)
at org.jikesrvm.runtime.DynamicLinker$DL_Helper.compileMethod(DynamicLinker.java:149)
at org.jikesrvm.runtime.DynamicLinker.lazyMethodInvoker(DynamicLinker.java:45)
at org.apache.lucene.index.IndexReader.close(IndexReader.java:630)
at dacapo.lusearch.LusearchHarness$QueryThread.runQuery(LusearchHarness.java:220)
at dacapo.lusearch.LusearchHarness$QueryThread.run(LusearchHarness.java:159)
bulk defer open issues to 3.1.2