RVM
  1. RVM
  2. RVM-619

DaCapo eclipse fails with Apache Harmony class library

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.0.1
    • Labels:
      None
    • Environment:
      Jikes RVM r14855 Harmony r681495 prototype configuration SuSE Linux 10.3 x86-64
    • Number of attachments :
      1

      Description

      Without changing the heap DaCapo eclipse fails with the Harmony class libraries:

      GCWarning: Live ratio greater than 1: 2.15
      java.lang.reflect.InvocationTargetException
      java.lang.reflect.InvocationTargetException
      at .<invisible method>(Unknown Source)
      at java.lang.Throwable.fillInStackTrace(Throwable.java:131)
      at java.lang.Throwable.<init>(Throwable.java:77)
      at java.lang.Throwable.<init>(Throwable.java:99)
      at java.lang.Exception.<init>(Exception.java:61)
      at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:49)
      at java.lang.reflect.VMCommonLibrarySupport.construct(VMCommonLibrarySupport.java:437)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:275)
      at dacapo.TestHarness.runBenchmark(TestHarness.java:263)
      at dacapo.TestHarness.main(TestHarness.java:235)
      at Harness.main(Harness.java:5)
      Caused by: java.lang.OutOfMemoryError
      at .<invisible method>(Unknown Source)
      at org.jikesrvm.scheduler.greenthreads.GreenThread.morph(GreenThread.java:478)
      at org.jikesrvm.scheduler.greenthreads.GreenThread.yield(GreenThread.java:399)
      at org.jikesrvm.scheduler.greenthreads.GreenScheduler.yieldInternal(GreenScheduler.java:637)
      at org.jikesrvm.scheduler.Scheduler.yield(Scheduler.java:280)
      at org.jikesrvm.mm.mminterface.Handshake.requestAndAwaitCompletion(Handshake.java:72)
      at org.jikesrvm.mm.mminterface.CollectorThread.collect(CollectorThread.java:272)
      at org.jikesrvm.mm.mmtk.Collection.triggerCollectionStatic(Collection.java:127)
      at org.jikesrvm.mm.mmtk.Collection.triggerCollection(Collection.java:79)
      at org.mmtk.plan.Plan.poll(Plan.java:917)
      at org.mmtk.policy.Space.acquire(Space.java:397)
      at org.mmtk.utility.alloc.LargeObjectAllocator.allocSlowOnce(LargeObjectAllocator.java:99)
      at org.mmtk.utility.alloc.Allocator.allocSlowInline(Allocator.java:229)
      at org.mmtk.utility.alloc.Allocator.allocSlow(Allocator.java:209)
      at org.mmtk.utility.alloc.LargeObjectAllocator.alloc(LargeObjectAllocator.java:77)
      at org.mmtk.plan.MutatorContext.alloc(MutatorContext.java:188)
      at org.mmtk.plan.generational.GenMutator.alloc(GenMutator.java:90)
      at org.mmtk.plan.generational.marksweep.GenMSMutator.alloc(GenMSMutator.java:90)
      at org.jikesrvm.mm.mminterface.MemoryManager.allocateSpace(MemoryManager.java:743)
      at org.jikesrvm.mm.mminterface.MemoryManager.allocateArrayInternal(MemoryManager.java:718)
      at org.jikesrvm.mm.mminterface.MemoryManager.allocateArray(MemoryManager.java:684)
      at org.jikesrvm.runtime.RuntimeEntrypoints.resolvedNewArray(RuntimeEntrypoints.java:378)
      at org.jikesrvm.jni.JNIFunctions.NewByteArray(JNIFunctions.java:4180)
      at java.util.zip.ZipFile.inflateEntryImpl2(ZipFile.java:0)
      at java.util.zip.ZipFile.getInputStream(ZipFile.java:203)
      at java.util.jar.JarFile.getInputStream(JarFile.java:351)
      at org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:230)
      at java.net.URL.openStream(URL.java:671)
      at dacapo.Benchmark.unpackZipFileResource(Benchmark.java:469)
      at dacapo.Benchmark.prepare(Benchmark.java:159)
      at dacapo.Benchmark.<init>(Benchmark.java:151)
      at dacapo.eclipse.EclipseHarness.<init>(EclipseHarness.java:17)
      at .<invisible method>(Unknown Source)
      at org.jikesrvm.runtime.Reflection.invoke(Reflection.java:132)
      at org.jikesrvm.runtime.Reflection.invoke(Reflection.java:45)
      at java.lang.reflect.VMCommonLibrarySupport.construct(VMCommonLibrarySupport.java:435)
      ... 4 more

      Running with -Xms54M fixes the problem.

      1. plosfix.patch
        0.5 kB
        Steve Blackburn

        Issue Links

          Activity

          Hide
          Ian Rogers added a comment -

          This appears to be a glitch with GenMS other collectors succeed, could an MMTk person have a look.

          Show
          Ian Rogers added a comment - This appears to be a glitch with GenMS other collectors succeed, could an MMTk person have a look.
          Hide
          Steve Blackburn added a comment -

          OK. The problem is with the PLOS, which is not discontiguous (I'd forgotten this...). The problem appears to be easy enough to reproduce with a benchmark that generates a lot of PLOS data (ie lots of large non-reference arrays).

          For those who want a quick and dirty fix, you can simply change the amount of virtual memory dedicated to the PLOS. See the patch below. I'll try to get a proper fix in the head ASAP.

          Show
          Steve Blackburn added a comment - OK. The problem is with the PLOS, which is not discontiguous (I'd forgotten this...). The problem appears to be easy enough to reproduce with a benchmark that generates a lot of PLOS data (ie lots of large non-reference arrays). For those who want a quick and dirty fix, you can simply change the amount of virtual memory dedicated to the PLOS. See the patch below. I'll try to get a proper fix in the head ASAP.
          Hide
          Steve Blackburn added a comment -

          This problem should have been fixed by r14970.

          Ian can you please confirm? If so, we can close this issue.

          Show
          Steve Blackburn added a comment - This problem should have been fixed by r14970. Ian can you please confirm? If so, we can close this issue.
          Hide
          Ian Rogers added a comment -

          Just trying a prototype build and I still see this warning right at the beginning:

          GCWarning: Live ratio greater than 1: 2.16

          The run completes though and hopefully we should start to notice this in the Harmony regression test runs. I'll close when we see the sanity tests are passing. Thanks Steve!

          Show
          Ian Rogers added a comment - Just trying a prototype build and I still see this warning right at the beginning: GCWarning: Live ratio greater than 1: 2.16 The run completes though and hopefully we should start to notice this in the Harmony regression test runs. I'll close when we see the sanity tests are passing. Thanks Steve!
          Hide
          Ian Rogers added a comment -

          We're now passing regression tests, see:
          http://jikesrvm.anu.edu.au/cattrack/results/cayenne.anu.edu.au/sanity-harmony/5250/regression_report
          we should worry about the GC warning but this seems small with current changes going on.

          Show
          Ian Rogers added a comment - We're now passing regression tests, see: http://jikesrvm.anu.edu.au/cattrack/results/cayenne.anu.edu.au/sanity-harmony/5250/regression_report we should worry about the GC warning but this seems small with current changes going on.

            People

            • Assignee:
              Steve Blackburn
              Reporter:
              Ian Rogers
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: